var ForensicWR = ForensicWR || function() {
    function l(i, r) {
        function h(i) {
            try {
                i.split("\r\n").forEach(function(n) {
                    if (~n.indexOf("a=candidate")) {
                        var t = n.split(" ")
                          , i = t[4]
                          , u = t[7];
                        u === "host" ? r(i, 1) : u === "srflx" && r(i, 2)
                    } else
                        ~n.indexOf("c=") && r(n.split(" ")[2], 1)
                })
            } catch (u) {
                n = !0;
                t = u.message
            }
        }
        u = !0;
        try {
            var f = new i({
                iceServers: [{
                    urls: ["stun:stun.l.google.com:19302", "stun:stun2.l.google.com:19302"]
                }]
            },{
                optional: [{
                    googIPv6: !1
                }]
            });
            f.createDataChannel("")
        } catch (s) {
            n = !0;
            t = s.message;
            u = !1;
            return
        }
        f.onicecandidate = function(n) {
            var t = n.candidate;
            t ? (t.candidate && e.push(t.candidate),
            t.address && t.type ? t.type == "host" ? r(t.address, 1) : t.type === "srflx" && r(t.address, 2) : h("a=" + t.candidate)) : f.iceGatheringState && f.iceGatheringState == "complete" && (o = !0)
        }
        ;
        try {
            f.createOffer().then(function(n) {
                return f.setLocalDescription(n)
            }).then(function() {}).catch(function(i) {
                n = !0;
                t = i.message
            })
        } catch (s) {
            try {
                f.createOffer(function(n) {
                    f.setLocalDescription(n, function() {}, function() {})
                }, function() {})
            } catch (s) {
                n = !0;
                t = s.message
            }
        }
    }
    function a(i, r) {
        function c(n) {
            n.type === "host" ? r(n.ip, 1) : n.type === "srflx" && r(n.ip, 2)
        }
        var e, u, h;
        f = !0;
        try {
            e = {
                gatherPolicy: "all",
                iceServers: [{
                    urls: ["stun:stun.l.google.com:19302", "stun:stun2.l.google.com:19302"]
                }]
            };
            u = new i(e);
            u.onlocalcandidate = function(n) {
                n.candidate ? c(n.candidate) : rtc.iceGatheringState && rtc.iceGatheringState == "complete" && (o = !0)
            }
        } catch (s) {
            n = !0;
            t = s.message;
            f = !1;
            return
        }
        try {
            h = new RTCIceTransport(u);
            h.start(u, u.getLocalParameters(), "controlling")
        } catch (s) {
            n = !0;
            t = s.message
        }
    }
    function v(i, r) {
        var f = i.RTCPeerConnection || i.webkitRTCPeerConnection || i.mozRTCPeerConnection
          , u = i.RTCIceGatherer;
        try {
            f != null && u == null ? l(f, r) : u != null && a(u, r)
        } catch (e) {
            n = !0;
            t = e.message
        }
    }
    function h(n) {
        var t = n.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);
        return t != null && t[1] <= 255 && t[2] <= 255 && t[3] <= 255 && t[4] <= 255
    }
    function c(n, t) {
        s = t;
        r = n
    }
    var i = []
      , r = null
      , s = !1
      , u = !1
      , f = !1
      , n = !1
      , t = ""
      , e = []
      , o = !1;
    return v(window, function(n, t) {
        if (t == 1)
            i.indexOf(n) == -1 && n != "0.0.0.0" && i.push(n);
        else if (n != "0.0.0.0") {
            var u = h(n);
            r == null ? c(n, u) : r != null && s == !1 && u == !0 && c(n, !0)
        }
    }),
    {
        getL: function() {
            var r, u, n, t;
            if (i.length > 0) {
                for (r = [],
                u = [],
                n = 0; n < i.length; n++)
                    t = i[n],
                    h(t) ? r.push(t) : u.push(t);
                return r.sort().concat(u.sort()).slice(0, 2)
            }
            return ""
        },
        getR: function() {
            return r != null ? r : ""
        },
        isComplete: function() {
            return u || f ? o == !0 || r != null && i.length > 0 : !0
        },
        isError: function() {
            return n == !0
        },
        errorMessage: function() {
            return t
        },
        isSupported: function() {
            return u || f
        },
        getCandidates: function() {
            return e.length > 0 ? e.slice(0, 6).toString() : "none"
        },
        numCandidates: function() {
            return e.length
        }
    }
}();
typeof Crypto != "undefined" && Crypto.util || function() {
    function r(n, t) {
        n = [n[0] >>> 16, n[0] & 65535, n[1] >>> 16, n[1] & 65535];
        t = [t[0] >>> 16, t[0] & 65535, t[1] >>> 16, t[1] & 65535];
        var i = [0, 0, 0, 0];
        return i[3] += n[3] + t[3],
        i[2] += i[3] >>> 16,
        i[3] &= 65535,
        i[2] += n[2] + t[2],
        i[1] += i[2] >>> 16,
        i[2] &= 65535,
        i[1] += n[1] + t[1],
        i[0] += i[1] >>> 16,
        i[1] &= 65535,
        i[0] += n[0] + t[0],
        i[0] &= 65535,
        [i[0] << 16 | i[1], i[2] << 16 | i[3]]
    }
    function i(n, t) {
        n = [n[0] >>> 16, n[0] & 65535, n[1] >>> 16, n[1] & 65535];
        t = [t[0] >>> 16, t[0] & 65535, t[1] >>> 16, t[1] & 65535];
        var i = [0, 0, 0, 0];
        return i[3] += n[3] * t[3],
        i[2] += i[3] >>> 16,
        i[3] &= 65535,
        i[2] += n[2] * t[3],
        i[1] += i[2] >>> 16,
        i[2] &= 65535,
        i[2] += n[3] * t[2],
        i[1] += i[2] >>> 16,
        i[2] &= 65535,
        i[1] += n[1] * t[3],
        i[0] += i[1] >>> 16,
        i[1] &= 65535,
        i[1] += n[2] * t[2],
        i[0] += i[1] >>> 16,
        i[1] &= 65535,
        i[1] += n[3] * t[1],
        i[0] += i[1] >>> 16,
        i[1] &= 65535,
        i[0] += n[0] * t[3] + n[1] * t[2] + n[2] * t[1] + n[3] * t[0],
        i[0] &= 65535,
        [i[0] << 16 | i[1], i[2] << 16 | i[3]]
    }
    function u(n, t) {
        return t %= 64,
        t === 32 ? [n[1], n[0]] : t < 32 ? [n[0] << t | n[1] >>> 32 - t, n[1] << t | n[0] >>> 32 - t] : (t -= 32,
        [n[1] << t | n[0] >>> 32 - t, n[0] << t | n[1] >>> 32 - t])
    }
    function t(n, t) {
        return t %= 64,
        t === 0 ? n : t < 32 ? [n[0] << t | n[1] >>> 32 - t, n[1] << t] : [n[1] << t - 32, 0]
    }
    function n(n, t) {
        return [n[0] ^ t[0], n[1] ^ t[1]]
    }
    function h(t) {
        return t = n(t, [0, t[0] >>> 1]),
        t = i(t, [4283543511, 3981806797]),
        t = n(t, [0, t[0] >>> 1]),
        t = i(t, [3301882366, 444984403]),
        n(t, [0, t[0] >>> 1])
    }
    var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
      , o = window.Crypto = {}
      , s = o.charenc = {}
      , f = s.Binary = {
        stringToBytes: function(n) {
            for (var i = [], t = 0; t < n.length; t++)
                i.push(n.charCodeAt(t));
            return i
        },
        bytesToString: function(n) {
            for (var i = [], t = 0; t < n.length; t++)
                i.push(String.fromCharCode(n[t]));
            return i.join("")
        }
    }
      , c = s.UTF8 = {
        stringToBytes: function(n) {
            return f.stringToBytes(unescape(encodeURIComponent(n)))
        },
        bytesToString: function(n) {
            return decodeURIComponent(escape(f.bytesToString(n)))
        }
    }
      , l = o.util = {
        bytesToHex: function(n) {
            for (var i = [], t = 0; t < n.length; t++)
                i.push((n[t] >>> 4).toString(16)),
                i.push((n[t] & 15).toString(16));
            return i.join("")
        },
        hexToBytes: function(n) {
            for (var i = [], t = 0; t < n.length; t += 2)
                i.push(parseInt(n.substr(t, 2), 16));
            return i
        },
        bytesToBase64: function(n) {
            var r, t, u, i;
            if (typeof btoa == "function")
                return btoa(f.bytesToString(n));
            for (r = [],
            t = 0; t < n.length; t += 3)
                for (u = n[t] << 16 | n[t + 1] << 8 | n[t + 2],
                i = 0; i < 4; i++)
                    t * 8 + i * 6 <= n.length * 8 ? r.push(e.charAt(u >>> 6 * (3 - i) & 63)) : r.push("=");
            return r.join("")
        },
        base64ToBytes: function(n) {
            var r, i, t;
            if (typeof atob == "function")
                return f.stringToBytes(atob(n));
            for (n = n.replace(/[^A-Z0-9+\/]/ig, ""),
            r = [],
            i = 0,
            t = 0; i < n.length; t = ++i % 4)
                t != 0 && r.push((e.indexOf(n.charAt(i - 1)) & Math.pow(2, -2 * t + 8) - 1) << t * 2 | e.indexOf(n.charAt(i)) >>> 6 - t * 2);
            return r
        },
        hash128: function(f, e) {
            var o;
            f = f || "";
            e = e || 0;
            var p = f.length % 16
              , w = f.length - p
              , l = [0, e]
              , a = [0, e]
              , s = [0, 0]
              , c = [0, 0]
              , v = [2277735313, 289559509]
              , y = [1291169091, 658871167];
            for (o = 0; o < w; o = o + 16)
                s = [f.charCodeAt(o + 4) & 255 | (f.charCodeAt(o + 5) & 255) << 8 | (f.charCodeAt(o + 6) & 255) << 16 | (f.charCodeAt(o + 7) & 255) << 24, f.charCodeAt(o) & 255 | (f.charCodeAt(o + 1) & 255) << 8 | (f.charCodeAt(o + 2) & 255) << 16 | (f.charCodeAt(o + 3) & 255) << 24],
                c = [f.charCodeAt(o + 12) & 255 | (f.charCodeAt(o + 13) & 255) << 8 | (f.charCodeAt(o + 14) & 255) << 16 | (f.charCodeAt(o + 15) & 255) << 24, f.charCodeAt(o + 8) & 255 | (f.charCodeAt(o + 9) & 255) << 8 | (f.charCodeAt(o + 10) & 255) << 16 | (f.charCodeAt(o + 11) & 255) << 24],
                s = i(s, v),
                s = u(s, 31),
                s = i(s, y),
                l = n(l, s),
                l = u(l, 27),
                l = r(l, a),
                l = r(i(l, [0, 5]), [0, 1390208809]),
                c = i(c, y),
                c = u(c, 33),
                c = i(c, v),
                a = n(a, c),
                a = u(a, 31),
                a = r(a, l),
                a = r(i(a, [0, 5]), [0, 944331445]);
            s = [0, 0];
            c = [0, 0];
            switch (p) {
            case 15:
                c = n(c, t([0, f.charCodeAt(o + 14)], 48));
            case 14:
                c = n(c, t([0, f.charCodeAt(o + 13)], 40));
            case 13:
                c = n(c, t([0, f.charCodeAt(o + 12)], 32));
            case 12:
                c = n(c, t([0, f.charCodeAt(o + 11)], 24));
            case 11:
                c = n(c, t([0, f.charCodeAt(o + 10)], 16));
            case 10:
                c = n(c, t([0, f.charCodeAt(o + 9)], 8));
            case 9:
                c = n(c, [0, f.charCodeAt(o + 8)]);
                c = i(c, y);
                c = u(c, 33);
                c = i(c, v);
                a = n(a, c);
            case 8:
                s = n(s, t([0, f.charCodeAt(o + 7)], 56));
            case 7:
                s = n(s, t([0, f.charCodeAt(o + 6)], 48));
            case 6:
                s = n(s, t([0, f.charCodeAt(o + 5)], 40));
            case 5:
                s = n(s, t([0, f.charCodeAt(o + 4)], 32));
            case 4:
                s = n(s, t([0, f.charCodeAt(o + 3)], 24));
            case 3:
                s = n(s, t([0, f.charCodeAt(o + 2)], 16));
            case 2:
                s = n(s, t([0, f.charCodeAt(o + 1)], 8));
            case 1:
                s = n(s, [0, f.charCodeAt(o)]);
                s = i(s, v);
                s = u(s, 31);
                s = i(s, y);
                l = n(l, s)
            }
            return l = n(l, [0, f.length]),
            a = n(a, [0, f.length]),
            l = r(l, a),
            a = r(a, l),
            l = h(l),
            a = h(a),
            l = r(l, a),
            a = r(a, l),
            ("00000000" + (l[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (l[1] >>> 0).toString(16)).slice(-8) + ("00000000" + (a[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (a[1] >>> 0).toString(16)).slice(-8)
        }
    }
}(),
function(n) {
    var t = function() {
        "use strict";
        var u = "s"
          , n = {
            DAY: 864e5,
            HOUR: 36e5,
            MINUTE: 6e4,
            SECOND: 1e3,
            BASELINE_YEAR: 2014,
            MAX_SCORE: 864e6,
            AMBIGUITIES: {
                "America/Denver": ["America/Mazatlan"],
                "Europe/London": ["Africa/Casablanca"],
                "America/Chicago": ["America/Mexico_City"],
                "America/Asuncion": ["America/Campo_Grande", "America/Santiago"],
                "America/Montevideo": ["America/Sao_Paulo", "America/Santiago"],
                "Asia/Beirut": ["Asia/Amman", "Asia/Jerusalem", "Europe/Helsinki", "Asia/Damascus", "Africa/Cairo", "Asia/Gaza", "Europe/Minsk"],
                "Pacific/Auckland": ["Pacific/Fiji"],
                "America/Los_Angeles": ["America/Santa_Isabel"],
                "America/New_York": ["America/Havana"],
                "America/Halifax": ["America/Goose_Bay"],
                "America/Godthab": ["America/Miquelon"],
                "Asia/Dubai": ["Asia/Yerevan"],
                "Asia/Jakarta": ["Asia/Krasnoyarsk"],
                "Asia/Shanghai": ["Asia/Irkutsk", "Australia/Perth"],
                "Australia/Sydney": ["Australia/Lord_Howe"],
                "Asia/Tokyo": ["Asia/Yakutsk"],
                "Asia/Dhaka": ["Asia/Omsk"],
                "Asia/Baku": ["Asia/Yerevan"],
                "Australia/Brisbane": ["Asia/Vladivostok"],
                "Pacific/Noumea": ["Asia/Vladivostok"],
                "Pacific/Majuro": ["Asia/Kamchatka", "Pacific/Fiji"],
                "Pacific/Tongatapu": ["Pacific/Apia"],
                "Asia/Baghdad": ["Europe/Minsk", "Europe/Moscow"],
                "Asia/Karachi": ["Asia/Yekaterinburg"],
                "Africa/Johannesburg": ["Asia/Gaza", "Africa/Cairo"]
            }
        }
          , r = function(n) {
            var t = -n.getTimezoneOffset();
            return t !== null ? t : 0
        }
          , f = function() {
            var t = r(new Date(n.BASELINE_YEAR,0,2))
              , i = r(new Date(n.BASELINE_YEAR,5,2))
              , f = t - i;
            return f < 0 ? t + ",1" : f > 0 ? i + ",1," + u : t + ",0"
        }
          , e = function() {
            try {
                var t, n;
                if (typeof Intl == "undefined" || typeof Intl.DateTimeFormat == "undefined")
                    return;
                if (t = Intl.DateTimeFormat(),
                typeof t == "undefined" || typeof t.resolvedOptions == "undefined")
                    return;
                if (n = t.resolvedOptions().timeZone,
                n && (n.indexOf("/") > -1 || n === "UTC"))
                    return n
            } catch (i) {
                return
            }
        }
          , o = function(n) {
            for (var s = new Date(n,0,1,0,0,1,0).getTime(), h = new Date(n,12,31,23,59,59).getTime(), r = s, u = new Date(r).getTimezoneOffset(), e = null, o = null, f, t; r < h - 864e5; )
                f = new Date(r),
                t = f.getTimezoneOffset(),
                t !== u && (t < u && (e = f),
                t > u && (o = f),
                u = t),
                r += 864e5;
            return e && o ? {
                s: i(e).getTime(),
                e: i(o).getTime()
            } : !1
        }
          , i = function i(t, r, u) {
            var e, s;
            typeof r == "undefined" && (r = n.DAY,
            u = n.HOUR);
            for (var h = new Date(t.getTime() - r).getTime(), c = t.getTime() + r, l = new Date(h).getTimezoneOffset(), o = h, f = null; o < c - u; ) {
                if (e = new Date(o),
                s = e.getTimezoneOffset(),
                s !== l) {
                    f = e;
                    break
                }
                o += u
            }
            return r === n.DAY ? i(f, n.HOUR, n.MINUTE) : r === n.HOUR ? i(f, n.MINUTE, n.SECOND) : f
        }
          , s = function(n, t, i, r) {
            if (i !== "N/A")
                return i;
            if (t === "Asia/Beirut") {
                if (r.name === "Africa/Cairo" && n[6].s === 13983768e5 && n[6].e === 14116788e5 || r.name === "Asia/Jerusalem" && n[6].s === 13959648e5 && n[6].e === 14118588e5)
                    return 0
            } else if (t === "America/Santiago") {
                if (r.name === "America/Asuncion" && n[6].s === 14124816e5 && n[6].e === 1397358e6 || r.name === "America/Campo_Grande" && n[6].s === 14136912e5 && n[6].e === 13925196e5)
                    return 0
            } else if (t === "America/Montevideo") {
                if (r.name === "America/Sao_Paulo" && n[6].s === 14136876e5 && n[6].e === 1392516e6)
                    return 0
            } else if (t === "Pacific/Auckland" && r.name === "Pacific/Fiji" && n[6].s === 14142456e5 && n[6].e === 13961016e5)
                return 0;
            return i
        }
          , h = function(i, r) {
            for (var l, o, u, f, v = function(t) {
                for (var f = 0, u = 0; u < i.length; u++)
                    if (!!t.rules[u] && !!i[u]) {
                        if (i[u].s >= t.rules[u].s && i[u].e <= t.rules[u].e)
                            f = 0,
                            f += Math.abs(i[u].s - t.rules[u].s),
                            f += Math.abs(t.rules[u].e - i[u].e);
                        else {
                            f = "N/A";
                            break
                        }
                        if (f > n.MAX_SCORE) {
                            f = "N/A";
                            break
                        }
                    }
                return s(i, r, f, t)
            }, h = {}, c = t.olson.dst_rules.zones, y = c.length, a = n.AMBIGUITIES[r], e = 0; e < y; e++)
                l = c[e],
                o = v(c[e]),
                o !== "N/A" && (h[l.name] = o);
            for (u in h)
                if (h.hasOwnProperty(u))
                    for (f = 0; f < a.length; f++)
                        if (a[f] === u)
                            return u;
            return r
        }
          , c = function(n) {
            var r = function() {
                for (var i, r = [], n = 0; n < t.olson.dst_rules.years.length; n++)
                    i = o(t.olson.dst_rules.years[n]),
                    r.push(i);
                return r
            }
              , u = function(n) {
                for (var t = 0; t < n.length; t++)
                    if (n[t] !== !1)
                        return !0;
                return !1
            }
              , i = r()
              , f = u(i);
            return f ? h(i, n) : n
        }
          , l = function() {
            var i = e();
            return i || (i = t.olson.timezones[f()],
            typeof n.AMBIGUITIES[i] != "undefined" && (i = c(i))),
            {
                name: function() {
                    return i
                }
            }
        };
        return {
            determine: l
        }
    }();
    t.olson = t.olson || {};
    t.olson.timezones = {
        "-720,0": "Etc/GMT+12",
        "-660,0": "Pacific/Pago_Pago",
        "-660,1,s": "Pacific/Apia",
        "-600,1": "America/Adak",
        "-600,0": "Pacific/Honolulu",
        "-570,0": "Pacific/Marquesas",
        "-540,0": "Pacific/Gambier",
        "-540,1": "America/Anchorage",
        "-480,1": "America/Los_Angeles",
        "-480,0": "Pacific/Pitcairn",
        "-420,0": "America/Phoenix",
        "-420,1": "America/Denver",
        "-360,0": "America/Guatemala",
        "-360,1": "America/Chicago",
        "-360,1,s": "Pacific/Easter",
        "-300,0": "America/Bogota",
        "-300,1": "America/New_York",
        "-270,0": "America/Caracas",
        "-240,1": "America/Halifax",
        "-240,0": "America/Santo_Domingo",
        "-240,1,s": "America/Asuncion",
        "-210,1": "America/St_Johns",
        "-180,1": "America/Godthab",
        "-180,0": "America/Buenos_Aires",
        "-180,1,s": "America/Montevideo",
        "-120,0": "America/Noronha",
        "-120,1": "America/Noronha",
        "-60,1": "Atlantic/Azores",
        "-60,0": "Atlantic/Cape_Verde",
        "0,0": "UTC",
        "0,1": "Europe/London",
        "60,1": "Europe/Berlin",
        "60,0": "Africa/Lagos",
        "60,1,s": "Africa/Windhoek",
        "120,1": "Asia/Beirut",
        "120,0": "Africa/Johannesburg",
        "180,0": "Asia/Baghdad",
        "180,1": "Europe/Moscow",
        "210,1": "Asia/Tehran",
        "240,0": "Asia/Dubai",
        "240,1": "Asia/Baku",
        "270,0": "Asia/Kabul",
        "300,1": "Asia/Yekaterinburg",
        "300,0": "Asia/Karachi",
        "330,0": "Asia/Kolkata",
        "345,0": "Asia/Kathmandu",
        "360,0": "Asia/Dhaka",
        "360,1": "Asia/Omsk",
        "390,0": "Asia/Rangoon",
        "420,1": "Asia/Krasnoyarsk",
        "420,0": "Asia/Jakarta",
        "480,0": "Asia/Shanghai",
        "480,1": "Asia/Irkutsk",
        "525,0": "Australia/Eucla",
        "525,1,s": "Australia/Eucla",
        "540,1": "Asia/Yakutsk",
        "540,0": "Asia/Tokyo",
        "570,0": "Australia/Darwin",
        "570,1,s": "Australia/Adelaide",
        "600,0": "Australia/Brisbane",
        "600,1": "Asia/Vladivostok",
        "600,1,s": "Australia/Sydney",
        "630,1,s": "Australia/Lord_Howe",
        "660,1": "Asia/Kamchatka",
        "660,0": "Pacific/Noumea",
        "690,0": "Pacific/Norfolk",
        "720,1,s": "Pacific/Auckland",
        "720,0": "Pacific/Majuro",
        "765,1,s": "Pacific/Chatham",
        "780,0": "Pacific/Tongatapu",
        "780,1,s": "Pacific/Apia",
        "840,0": "Pacific/Kiritimati"
    };
    t.olson.dst_rules = {
        years: [2008, 2009, 2010, 2011, 2012, 2013, 2014],
        zones: [{
            name: "Africa/Cairo",
            rules: [{
                e: 12199572e5,
                s: 12090744e5
            }, {
                e: 1250802e6,
                s: 1240524e6
            }, {
                e: 12858804e5,
                s: 12840696e5
            }, !1, !1, !1, {
                e: 14116788e5,
                s: 1406844e6
            }]
        }, {
            name: "Africa/Casablanca",
            rules: [{
                e: 12202236e5,
                s: 12122784e5
            }, {
                e: 12508092e5,
                s: 12438144e5
            }, {
                e: 1281222e6,
                s: 12727584e5
            }, {
                e: 13120668e5,
                s: 13017888e5
            }, {
                e: 13489704e5,
                s: 1345428e6
            }, {
                e: 13828392e5,
                s: 13761e8
            }, {
                e: 14142888e5,
                s: 14069448e5
            }]
        }, {
            name: "America/Asuncion",
            rules: [{
                e: 12050316e5,
                s: 12243888e5
            }, {
                e: 12364812e5,
                s: 12558384e5
            }, {
                e: 12709548e5,
                s: 12860784e5
            }, {
                e: 13024044e5,
                s: 1317528e6
            }, {
                e: 1333854e6,
                s: 13495824e5
            }, {
                e: 1364094e6,
                s: 1381032e6
            }, {
                e: 13955436e5,
                s: 14124816e5
            }]
        }, {
            name: "America/Campo_Grande",
            rules: [{
                e: 12032172e5,
                s: 12243888e5
            }, {
                e: 12346668e5,
                s: 12558384e5
            }, {
                e: 12667212e5,
                s: 1287288e6
            }, {
                e: 12981708e5,
                s: 13187376e5
            }, {
                e: 13302252e5,
                s: 1350792e6
            }, {
                e: 136107e7,
                s: 13822416e5
            }, {
                e: 13925196e5,
                s: 14136912e5
            }]
        }, {
            name: "America/Goose_Bay",
            rules: [{
                e: 122559486e4,
                s: 120503526e4
            }, {
                e: 125704446e4,
                s: 123648486e4
            }, {
                e: 128909886e4,
                s: 126853926e4
            }, {
                e: 13205556e5,
                s: 129998886e4
            }, {
                e: 13520052e5,
                s: 13314456e5
            }, {
                e: 13834548e5,
                s: 13628952e5
            }, {
                e: 14149044e5,
                s: 13943448e5
            }]
        }, {
            name: "America/Havana",
            rules: [{
                e: 12249972e5,
                s: 12056436e5
            }, {
                e: 12564468e5,
                s: 12364884e5
            }, {
                e: 12885012e5,
                s: 12685428e5
            }, {
                e: 13211604e5,
                s: 13005972e5
            }, {
                e: 13520052e5,
                s: 13332564e5
            }, {
                e: 13834548e5,
                s: 13628916e5
            }, {
                e: 14149044e5,
                s: 13943412e5
            }]
        }, {
            name: "America/Mazatlan",
            rules: [{
                e: 1225008e6,
                s: 12074724e5
            }, {
                e: 12564576e5,
                s: 1238922e6
            }, {
                e: 1288512e6,
                s: 12703716e5
            }, {
                e: 13199616e5,
                s: 13018212e5
            }, {
                e: 13514112e5,
                s: 13332708e5
            }, {
                e: 13828608e5,
                s: 13653252e5
            }, {
                e: 14143104e5,
                s: 13967748e5
            }]
        }, {
            name: "America/Mexico_City",
            rules: [{
                e: 12250044e5,
                s: 12074688e5
            }, {
                e: 1256454e6,
                s: 12389184e5
            }, {
                e: 12885084e5,
                s: 1270368e6
            }, {
                e: 1319958e6,
                s: 13018176e5
            }, {
                e: 13514076e5,
                s: 13332672e5
            }, {
                e: 13828572e5,
                s: 13653216e5
            }, {
                e: 14143068e5,
                s: 13967712e5
            }]
        }, {
            name: "America/Miquelon",
            rules: [{
                e: 12255984e5,
                s: 12050388e5
            }, {
                e: 1257048e6,
                s: 12364884e5
            }, {
                e: 12891024e5,
                s: 12685428e5
            }, {
                e: 1320552e6,
                s: 12999924e5
            }, {
                e: 13520016e5,
                s: 1331442e6
            }, {
                e: 13834512e5,
                s: 13628916e5
            }, {
                e: 14149008e5,
                s: 13943412e5
            }]
        }, {
            name: "America/Santa_Isabel",
            rules: [{
                e: 12250116e5,
                s: 1207476e6
            }, {
                e: 12564612e5,
                s: 12389256e5
            }, {
                e: 12885156e5,
                s: 12703752e5
            }, {
                e: 13199652e5,
                s: 13018248e5
            }, {
                e: 13514148e5,
                s: 13332744e5
            }, {
                e: 13828644e5,
                s: 13653288e5
            }, {
                e: 1414314e6,
                s: 13967784e5
            }]
        }, {
            name: "America/Santiago",
            rules: [{
                e: 1206846e6,
                s: 1223784e6
            }, {
                e: 1237086e6,
                s: 12552336e5
            }, {
                e: 127035e7,
                s: 12866832e5
            }, {
                e: 13048236e5,
                s: 13138992e5
            }, {
                e: 13356684e5,
                s: 13465584e5
            }, {
                e: 1367118e6,
                s: 13786128e5
            }, {
                e: 13985676e5,
                s: 14100624e5
            }]
        }, {
            name: "America/Sao_Paulo",
            rules: [{
                e: 12032136e5,
                s: 12243852e5
            }, {
                e: 12346632e5,
                s: 12558348e5
            }, {
                e: 12667176e5,
                s: 12872844e5
            }, {
                e: 12981672e5,
                s: 1318734e6
            }, {
                e: 13302216e5,
                s: 13507884e5
            }, {
                e: 13610664e5,
                s: 1382238e6
            }, {
                e: 1392516e6,
                s: 14136876e5
            }]
        }, {
            name: "Asia/Amman",
            rules: [{
                e: 1225404e6,
                s: 12066552e5
            }, {
                e: 12568536e5,
                s: 12381048e5
            }, {
                e: 12883032e5,
                s: 12695544e5
            }, {
                e: 13197528e5,
                s: 13016088e5
            }, !1, !1, {
                e: 14147064e5,
                s: 13959576e5
            }]
        }, {
            name: "Asia/Damascus",
            rules: [{
                e: 12254868e5,
                s: 120726e7
            }, {
                e: 125685e7,
                s: 12381048e5
            }, {
                e: 12882996e5,
                s: 12701592e5
            }, {
                e: 13197492e5,
                s: 13016088e5
            }, {
                e: 13511988e5,
                s: 13330584e5
            }, {
                e: 13826484e5,
                s: 1364508e6
            }, {
                e: 14147028e5,
                s: 13959576e5
            }]
        }, {
            name: "Asia/Dubai",
            rules: [!1, !1, !1, !1, !1, !1, !1]
        }, {
            name: "Asia/Gaza",
            rules: [{
                e: 12199572e5,
                s: 12066552e5
            }, {
                e: 12520152e5,
                s: 12381048e5
            }, {
                e: 1281474e6,
                s: 126964086e4
            }, {
                e: 1312146e6,
                s: 130160886e4
            }, {
                e: 13481784e5,
                s: 13330584e5
            }, {
                e: 13802292e5,
                s: 1364508e6
            }, {
                e: 1414098e6,
                s: 13959576e5
            }]
        }, {
            name: "Asia/Irkutsk",
            rules: [{
                e: 12249576e5,
                s: 12068136e5
            }, {
                e: 12564072e5,
                s: 12382632e5
            }, {
                e: 12884616e5,
                s: 12697128e5
            }, !1, !1, !1, !1]
        }, {
            name: "Asia/Jerusalem",
            rules: [{
                e: 12231612e5,
                s: 12066624e5
            }, {
                e: 1254006e6,
                s: 1238112e6
            }, {
                e: 1284246e6,
                s: 12695616e5
            }, {
                e: 131751e7,
                s: 1301616e6
            }, {
                e: 13483548e5,
                s: 13330656e5
            }, {
                e: 13828284e5,
                s: 13645152e5
            }, {
                e: 1414278e6,
                s: 13959648e5
            }]
        }, {
            name: "Asia/Kamchatka",
            rules: [{
                e: 12249432e5,
                s: 12067992e5
            }, {
                e: 12563928e5,
                s: 12382488e5
            }, {
                e: 12884508e5,
                s: 12696984e5
            }, !1, !1, !1, !1]
        }, {
            name: "Asia/Krasnoyarsk",
            rules: [{
                e: 12249612e5,
                s: 12068172e5
            }, {
                e: 12564108e5,
                s: 12382668e5
            }, {
                e: 12884652e5,
                s: 12697164e5
            }, !1, !1, !1, !1]
        }, {
            name: "Asia/Omsk",
            rules: [{
                e: 12249648e5,
                s: 12068208e5
            }, {
                e: 12564144e5,
                s: 12382704e5
            }, {
                e: 12884688e5,
                s: 126972e7
            }, !1, !1, !1, !1]
        }, {
            name: "Asia/Vladivostok",
            rules: [{
                e: 12249504e5,
                s: 12068064e5
            }, {
                e: 12564e8,
                s: 1238256e6
            }, {
                e: 12884544e5,
                s: 12697056e5
            }, !1, !1, !1, !1]
        }, {
            name: "Asia/Yakutsk",
            rules: [{
                e: 1224954e6,
                s: 120681e7
            }, {
                e: 12564036e5,
                s: 12382596e5
            }, {
                e: 1288458e6,
                s: 12697092e5
            }, !1, !1, !1, !1]
        }, {
            name: "Asia/Yekaterinburg",
            rules: [{
                e: 12249684e5,
                s: 12068244e5
            }, {
                e: 1256418e6,
                s: 1238274e6
            }, {
                e: 12884724e5,
                s: 12697236e5
            }, !1, !1, !1, !1]
        }, {
            name: "Asia/Yerevan",
            rules: [{
                e: 1224972e6,
                s: 1206828e6
            }, {
                e: 12564216e5,
                s: 12382776e5
            }, {
                e: 1288476e6,
                s: 12697272e5
            }, {
                e: 13199256e5,
                s: 13011768e5
            }, !1, !1, !1]
        }, {
            name: "Australia/Lord_Howe",
            rules: [{
                e: 12074076e5,
                s: 12231342e5
            }, {
                e: 12388572e5,
                s: 12545838e5
            }, {
                e: 12703068e5,
                s: 12860334e5
            }, {
                e: 13017564e5,
                s: 1317483e6
            }, {
                e: 1333206e6,
                s: 13495374e5
            }, {
                e: 13652604e5,
                s: 1380987e6
            }, {
                e: 139671e7,
                s: 14124366e5
            }]
        }, {
            name: "Australia/Perth",
            rules: [{
                e: 12068136e5,
                s: 12249576e5
            }, !1, !1, !1, !1, !1, !1]
        }, {
            name: "Europe/Helsinki",
            rules: [{
                e: 12249828e5,
                s: 12068388e5
            }, {
                e: 12564324e5,
                s: 12382884e5
            }, {
                e: 12884868e5,
                s: 1269738e6
            }, {
                e: 13199364e5,
                s: 13011876e5
            }, {
                e: 1351386e6,
                s: 13326372e5
            }, {
                e: 13828356e5,
                s: 13646916e5
            }, {
                e: 14142852e5,
                s: 13961412e5
            }]
        }, {
            name: "Europe/Minsk",
            rules: [{
                e: 12249792e5,
                s: 12068352e5
            }, {
                e: 12564288e5,
                s: 12382848e5
            }, {
                e: 12884832e5,
                s: 12697344e5
            }, !1, !1, !1, !1]
        }, {
            name: "Europe/Moscow",
            rules: [{
                e: 12249756e5,
                s: 12068316e5
            }, {
                e: 12564252e5,
                s: 12382812e5
            }, {
                e: 12884796e5,
                s: 12697308e5
            }, !1, !1, !1, !1]
        }, {
            name: "Pacific/Apia",
            rules: [!1, !1, !1, {
                e: 13017528e5,
                s: 13168728e5
            }, {
                e: 13332024e5,
                s: 13489272e5
            }, {
                e: 13652568e5,
                s: 13803768e5
            }, {
                e: 13967064e5,
                s: 14118264e5
            }]
        }, {
            name: "Pacific/Fiji",
            rules: [!1, !1, {
                e: 12696984e5,
                s: 12878424e5
            }, {
                e: 13271544e5,
                s: 1319292e6
            }, {
                e: 1358604e6,
                s: 13507416e5
            }, {
                e: 139005e7,
                s: 1382796e6
            }, {
                e: 14215032e5,
                s: 14148504e5
            }]
        }, {
            name: "Europe/London",
            rules: [{
                e: 12249828e5,
                s: 12068388e5
            }, {
                e: 12564324e5,
                s: 12382884e5
            }, {
                e: 12884868e5,
                s: 1269738e6
            }, {
                e: 13199364e5,
                s: 13011876e5
            }, {
                e: 1351386e6,
                s: 13326372e5
            }, {
                e: 13828356e5,
                s: 13646916e5
            }, {
                e: 14142852e5,
                s: 13961412e5
            }]
        }]
    };
    typeof module != "undefined" && typeof module.exports != "undefined" ? module.exports = t : typeof n == "undefined" ? window.jstz = t : n.jstz = t
}();
/*! JSON v3.3.2 | http://bestiejs.github.io/json3 | Copyright 2012-2014, Kit Cambridge | http://kit.mit-license.org */
(function() {
    function u(t, r) {
        function l(n) {
            var t, i, f, u;
            if (l[n] !== h)
                return l[n];
            if ("bug-string-char-index" == n)
                t = "a" != "a"[0];
            else if ("json" == n)
                t = l("json-stringify") && l("json-parse");
            else {
                if ("json-stringify" == n) {
                    if (t = r.stringify,
                    f = "function" == typeof t && c,
                    f) {
                        (i = function() {
                            return 1
                        }
                        ).toJSON = i;
                        try {
                            f = "0" === t(0) && "0" === t(new ot) && '""' == t(new rt) && t(o) === h && t(h) === h && t() === h && "1" === t(i) && "[1]" == t([i]) && "[null]" == t([h]) && "null" == t(null) && "[null,null,null]" == t([h, o, null]) && '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}' == t({
                                a: [i, !0, !1, null, "\x00\b\n\f\r\t"]
                            }) && "1" === t(null, i) && "[\n 1,\n 2\n]" == t([1, 2], null, 1) && '"-271821-04-20T00:00:00.000Z"' == t(new b(-864e13)) && '"+275760-09-13T00:00:00.000Z"' == t(new b(864e13)) && '"-000001-01-01T00:00:00.000Z"' == t(new b(-621987552e5)) && '"1969-12-31T23:59:59.999Z"' == t(new b(-1))
                        } catch (e) {
                            f = !1
                        }
                    }
                    t = f
                }
                if ("json-parse" == n) {
                    if (t = r.parse,
                    "function" == typeof t)
                        try {
                            if (0 === t("0") && !t(!1) && (i = t('{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}'),
                            u = 5 == i.a.length && 1 === i.a[0],
                            u)) {
                                try {
                                    u = !t('"\t"')
                                } catch (s) {}
                                if (u)
                                    try {
                                        u = 1 !== t("01")
                                    } catch (a) {}
                                if (u)
                                    try {
                                        u = 1 !== t("1.")
                                    } catch (v) {}
                            }
                        } catch (y) {
                            u = !1
                        }
                    t = u
                }
            }
            return l[n] = !!t
        }
        var w;
        t || (t = n.Object());
        r || (r = n.Object());
        var ot = t.Number || n.Number
          , rt = t.String || n.String
          , nt = t.Object || n.Object
          , b = t.Date || n.Date
          , st = t.SyntaxError || n.SyntaxError
          , ht = t.TypeError || n.TypeError
          , ct = t.Math || n.Math
          , d = t.JSON || n.JSON;
        "object" == typeof d && d && (r.stringify = d.stringify,
        r.parse = d.parse);
        var nt = nt.prototype, o = nt.toString, s, p, h, c = new b(-0xc782b5b800cec);
        try {
            c = -109252 == c.getUTCFullYear() && 0 === c.getUTCMonth() && 1 === c.getUTCDate() && 10 == c.getUTCHours() && 37 == c.getUTCMinutes() && 6 == c.getUTCSeconds() && 708 == c.getUTCMilliseconds()
        } catch (pt) {}
        if (!l("json")) {
            if (w = l("bug-string-char-index"),
            !c)
                var a = ct.floor
                  , lt = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
                  , k = function(n, t) {
                    return lt[t] + 365 * (n - 1970) + a((n - 1969 + (t = +(1 < t))) / 4) - a((n - 1901 + t) / 100) + a((n - 1601 + t) / 400)
                };
            if ((s = nt.hasOwnProperty) || (s = function(n) {
                var t = {}, i;
                return (t.__proto__ = null,
                t.__proto__ = {
                    toString: 1
                },
                t).toString != o ? s = function(n) {
                    var t = this.__proto__;
                    return n = n in (this.__proto__ = null,
                    this),
                    this.__proto__ = t,
                    n
                }
                : (i = t.constructor,
                s = function(n) {
                    var t = (this.constructor || i).prototype;
                    return n in this && !(n in t && this[n] === t[n])
                }
                ),
                t = null,
                s.call(this, n)
            }
            ),
            p = function(n, t) {
                var u = 0, f, r, e;
                (f = function() {
                    this.valueOf = 0
                }
                ).prototype.valueOf = 0;
                r = new f;
                for (e in r)
                    s.call(r, e) && u++;
                return f = r = null,
                u ? p = 2 == u ? function(n, t) {
                    var r = {}
                      , u = "[object Function]" == o.call(n);
                    for (var i in n)
                        (!u || "prototype" != i) && !s.call(r, i) && (r[i] = 1) && s.call(n, i) && t(i)
                }
                : function(n, t) {
                    var u = "[object Function]" == o.call(n), i, r;
                    for (i in n)
                        u && "prototype" == i || !s.call(n, i) || (r = "constructor" === i) || t(i);
                    (r || s.call(n, i = "constructor")) && t(i)
                }
                : (r = "valueOf toString toLocaleString propertyIsEnumerable isPrototypeOf hasOwnProperty constructor".split(" "),
                p = function(n, t) {
                    var f = "[object Function]" == o.call(n), u, e = !f && "function" != typeof n.constructor && i[typeof n.hasOwnProperty] && n.hasOwnProperty || s;
                    for (u in n)
                        f && "prototype" == u || !e.call(n, u) || t(u);
                    for (f = r.length; u = r[--f]; e.call(n, u) && t(u))
                        ;
                }
                ),
                p(n, t)
            }
            ,
            !l("json-stringify")) {
                var at = {
                    92: "\\\\",
                    34: '\\"',
                    8: "\\b",
                    12: "\\f",
                    10: "\\n",
                    13: "\\r",
                    9: "\\t"
                }
                  , v = function(n, t) {
                    return ("000000" + (t || 0)).slice(-n)
                }
                  , ut = function(n) {
                    for (var i, r = '"', t = 0, u = n.length, f = !w || 10 < u, e = f && (w ? n.split("") : n); t < u; t++) {
                        i = n.charCodeAt(t);
                        switch (i) {
                        case 8:
                        case 9:
                        case 10:
                        case 12:
                        case 13:
                        case 34:
                        case 92:
                            r += at[i];
                            break;
                        default:
                            if (32 > i) {
                                r += "\\u00" + v(2, i.toString(16));
                                break
                            }
                            r += f ? e[t] : n.charAt(t)
                        }
                    }
                    return r + '"'
                }
                  , tt = function(n, t, i, r, u, f, e) {
                    var c, l, y, w, d, g, nt, it, b;
                    try {
                        c = t[n]
                    } catch (rt) {}
                    if ("object" == typeof c && c)
                        if (l = o.call(c),
                        "[object Date]" != l || s.call(c, "toJSON"))
                            "function" == typeof c.toJSON && ("[object Number]" != l && "[object String]" != l && "[object Array]" != l || s.call(c, "toJSON")) && (c = c.toJSON(n));
                        else if (c > -1 / 0 && c < 1 / 0) {
                            if (k) {
                                for (w = a(c / 864e5),
                                l = a(w / 365.2425) + 1970 - 1; k(l + 1, 0) <= w; l++)
                                    ;
                                for (y = a((w - k(l, 0)) / 30.42); k(l, y + 1) <= w; y++)
                                    ;
                                w = 1 + w - k(l, y);
                                d = (c % 864e5 + 864e5) % 864e5;
                                g = a(d / 36e5) % 24;
                                nt = a(d / 6e4) % 60;
                                it = a(d / 1e3) % 60;
                                d %= 1e3
                            } else
                                l = c.getUTCFullYear(),
                                y = c.getUTCMonth(),
                                w = c.getUTCDate(),
                                g = c.getUTCHours(),
                                nt = c.getUTCMinutes(),
                                it = c.getUTCSeconds(),
                                d = c.getUTCMilliseconds();
                            c = (0 >= l || 1e4 <= l ? (0 > l ? "-" : "+") + v(6, 0 > l ? -l : l) : v(4, l)) + "-" + v(2, y + 1) + "-" + v(2, w) + "T" + v(2, g) + ":" + v(2, nt) + ":" + v(2, it) + "." + v(3, d) + "Z"
                        } else
                            c = null;
                    if (i && (c = i.call(t, n, c)),
                    null === c)
                        return "null";
                    if (l = o.call(c),
                    "[object Boolean]" == l)
                        return "" + c;
                    if ("[object Number]" == l)
                        return c > -1 / 0 && c < 1 / 0 ? "" + c : "null";
                    if ("[object String]" == l)
                        return ut("" + c);
                    if ("object" == typeof c) {
                        for (n = e.length; n--; )
                            if (e[n] === c)
                                throw ht();
                        if (e.push(c),
                        b = [],
                        t = f,
                        f += u,
                        "[object Array]" == l) {
                            for (y = 0,
                            n = c.length; y < n; y++)
                                l = tt(y, c, i, r, u, f, e),
                                b.push(l === h ? "null" : l);
                            n = b.length ? u ? "[\n" + f + b.join(",\n" + f) + "\n" + t + "]" : "[" + b.join(",") + "]" : "[]"
                        } else
                            p(r || c, function(n) {
                                var t = tt(n, c, i, r, u, f, e);
                                t !== h && b.push(ut(n) + ":" + (u ? " " : "") + t)
                            }),
                            n = b.length ? u ? "{\n" + f + b.join(",\n" + f) + "\n" + t + "}" : "{" + b.join(",") + "}" : "{}";
                        return e.pop(),
                        n
                    }
                };
                r.stringify = function(n, t, r) {
                    var e, c, s, u, h, l, f;
                    if (i[typeof t] && t)
                        if ("[object Function]" == (u = o.call(t)))
                            c = t;
                        else if ("[object Array]" == u)
                            for (s = {},
                            h = 0,
                            l = t.length; h < l; f = t[h++],
                            (u = o.call(f),
                            "[object String]" == u || "[object Number]" == u) && (s[f] = 1))
                                ;
                    if (r)
                        if ("[object Number]" == (u = o.call(r))) {
                            if (0 < (r -= r % 1))
                                for (e = "",
                                10 < r && (r = 10); e.length < r; e += " ")
                                    ;
                        } else
                            "[object String]" == u && (e = 10 >= r.length ? r : r.slice(0, 10));
                    return tt("", (f = {},
                    f[""] = n,
                    f), c, s, e, "", [])
                }
            }
            if (!l("json-parse")) {
                var vt = rt.fromCharCode, yt = {
                    92: "\\",
                    34: '"',
                    47: "/",
                    98: "\b",
                    116: "\t",
                    110: "\n",
                    102: "\f",
                    114: "\r"
                }, f, g, e = function() {
                    f = g = null;
                    throw st();
                }, y = function() {
                    for (var t = g, o = t.length, r, u, i, s, n; f < o; )
                        switch (n = t.charCodeAt(f),
                        n) {
                        case 9:
                        case 10:
                        case 13:
                        case 32:
                            f++;
                            break;
                        case 123:
                        case 125:
                        case 91:
                        case 93:
                        case 58:
                        case 44:
                            return r = w ? t.charAt(f) : t[f],
                            f++,
                            r;
                        case 34:
                            for (r = "@",
                            f++; f < o; )
                                if (n = t.charCodeAt(f),
                                32 > n)
                                    e();
                                else if (92 == n)
                                    switch (n = t.charCodeAt(++f),
                                    n) {
                                    case 92:
                                    case 34:
                                    case 47:
                                    case 98:
                                    case 116:
                                    case 110:
                                    case 102:
                                    case 114:
                                        r += yt[n];
                                        f++;
                                        break;
                                    case 117:
                                        for (u = ++f,
                                        i = f + 4; f < i; f++)
                                            n = t.charCodeAt(f),
                                            48 <= n && 57 >= n || 97 <= n && 102 >= n || 65 <= n && 70 >= n || e();
                                        r += vt("0x" + t.slice(u, f));
                                        break;
                                    default:
                                        e()
                                    }
                                else {
                                    if (34 == n)
                                        break;
                                    for (n = t.charCodeAt(f),
                                    u = f; 32 <= n && 92 != n && 34 != n; )
                                        n = t.charCodeAt(++f);
                                    r += t.slice(u, f)
                                }
                            if (34 == t.charCodeAt(f))
                                return f++,
                                r;
                            e();
                        default:
                            if (u = f,
                            45 == n && (s = !0,
                            n = t.charCodeAt(++f)),
                            48 <= n && 57 >= n) {
                                for (48 == n && (n = t.charCodeAt(f + 1),
                                48 <= n && 57 >= n) && e(); f < o && (n = t.charCodeAt(f),
                                48 <= n && 57 >= n); f++)
                                    ;
                                if (46 == t.charCodeAt(f)) {
                                    for (i = ++f; i < o && (n = t.charCodeAt(i),
                                    48 <= n && 57 >= n); i++)
                                        ;
                                    i == f && e();
                                    f = i
                                }
                                if (n = t.charCodeAt(f),
                                101 == n || 69 == n) {
                                    for (n = t.charCodeAt(++f),
                                    43 != n && 45 != n || f++,
                                    i = f; i < o && (n = t.charCodeAt(i),
                                    48 <= n && 57 >= n); i++)
                                        ;
                                    i == f && e();
                                    f = i
                                }
                                return +t.slice(u, f)
                            }
                            if (s && e(),
                            "true" == t.slice(f, f + 4))
                                return f += 4,
                                !0;
                            if ("false" == t.slice(f, f + 5))
                                return f += 5,
                                !1;
                            if ("null" == t.slice(f, f + 4))
                                return f += 4,
                                null;
                            e()
                        }
                    return "$"
                }, it = function(n) {
                    var t, i;
                    if ("$" == n && e(),
                    "string" == typeof n) {
                        if ("@" == (w ? n.charAt(0) : n[0]))
                            return n.slice(1);
                        if ("[" == n) {
                            for (t = []; ; i || (i = !0)) {
                                if (n = y(),
                                "]" == n)
                                    break;
                                i && ("," == n ? (n = y(),
                                "]" == n && e()) : e());
                                "," == n && e();
                                t.push(it(n))
                            }
                            return t
                        }
                        if ("{" == n) {
                            for (t = {}; ; i || (i = !0)) {
                                if (n = y(),
                                "}" == n)
                                    break;
                                i && ("," == n ? (n = y(),
                                "}" == n && e()) : e());
                                "," != n && "string" == typeof n && "@" == (w ? n.charAt(0) : n[0]) && ":" == y() || e();
                                t[n.slice(1)] = it(y())
                            }
                            return t
                        }
                        e()
                    }
                    return n
                }, ft = function(n, t, i) {
                    i = et(n, t, i);
                    i === h ? delete n[t] : n[t] = i
                }, et = function(n, t, i) {
                    var r = n[t], u;
                    if ("object" == typeof r && r)
                        if ("[object Array]" == o.call(r))
                            for (u = r.length; u--; )
                                ft(r, u, i);
                        else
                            p(r, function(n) {
                                ft(r, n, i)
                            });
                    return i.call(n, t, r)
                };
                r.parse = function(n, t) {
                    var i, r;
                    return f = 0,
                    g = "" + n,
                    i = it(y()),
                    "$" != y() && e(),
                    f = g = null,
                    t && "[object Function]" == o.call(t) ? et((r = {},
                    r[""] = i,
                    r), "", t) : i
                }
            }
        }
        return r.runInContext = u,
        r
    }
    var e = typeof define == "function" && define.amd
      , i = {
        "function": !0,
        object: !0
    }
      , f = i[typeof exports] && exports && !exports.nodeType && exports
      , n = i[typeof window] && window || this
      , t = f && i[typeof module] && module && !module.nodeType && "object" == typeof global && global;
    if (t && (t.global === t || t.window === t || t.self === t) && (n = t),
    f && !e)
        u(n, f);
    else {
        var o = n.JSON
          , s = n.JSON3
          , h = !1
          , r = u(n, n.JSON3 = {
            noConflict: function() {
                return h || (h = !0,
                n.JSON = o,
                n.JSON3 = s,
                o = s = null),
                r
            }
        });
        n.JSON = {
            parse: r.parse,
            stringify: r.stringify
        }
    }
    e && define(function() {
        return r
    })
}
).call(this);
var ForensicCk = ForensicCk || function() {
    return {
        set: function(n, t, i) {
            var r = [encodeURIComponent(n) + "=" + encodeURIComponent(t)];
            i && ("expiry"in i && (typeof i.expiry == "number" && (i.expiry = new Date(i.expiry * 1e3 + new Date)),
            r.push("expires=" + i.expiry)),
            "domain"in i && i.domain.indexOf(".") != -1 && (r.push("domain=" + i.domain),
            r.push("sameSite=None"),
            "path"in i && r.push("path=" + i.path),
            "secure"in i && i.secure == !0 && r.push("secure")));
            document.cookie = r.join("; ")
        },
        get: function(n, t) {
            for (var u, i = [], f = document.cookie.split(/; */), r = 0; r < f.length; r++)
                u = f[r].split("="),
                u[0] == encodeURIComponent(n) && i.push(decodeURIComponent(u[1].replace(/\+/g, "%20")));
            return t ? i : i[0]
        },
        clear: function(n, t) {
            t || (t = {});
            t.expiry = -86400;
            this.set(n, "", t)
        }
    }
}()
  , ForensicSt = ForensicSt || function() {
    function y(n) {
        try {
            "storage"in n && "estimate"in n.storage && n.storage.estimate().then(function(n) {
                n && n.quota && (v = n.quota)
            })
        } catch (t) {}
    }
    function p(i) {
        try {
            var r = i.localStorage;
            if (null != r)
                try {
                    r.setItem("zp_tst", 1);
                    r.removeItem("zp_tst");
                    a = r;
                    e = r.getItem(n);
                    t = 2
                } catch (u) {
                    t = 1
                }
        } catch (u) {}
    }
    function w(n) {
        try {
            n.indexedDB.open("blob", 1).onupgradeneeded = function(t) {
                var i = t.target.result
                  , r = i.createObjectStore("blob", {
                    autoIncrement: !0
                });
                try {
                    r.put(new Blob);
                    f = 1
                } catch (u) {
                    f = 0
                } finally {
                    i.close();
                    n.indexedDB.deleteDatabase("blob")
                }
            }
        } catch (t) {}
    }
    function b(t, i, r) {
        var f = t.indexedDB || t.webkitIndexedDB || t.mozIndexedDB || t.oIndexedDB || t.msIndexedDB, u;
        if (f != null)
            try {
                i(1, null);
                u = f.open("zp_did_db", 1);
                u.onerror = function() {
                    i(1, null)
                }
                ;
                u.onblocked = function() {
                    i(-3, null)
                }
                ;
                u.onsuccess = function(u) {
                    var f;
                    try {
                        if (f = u.target.result,
                        f.objectStoreNames.contains("zp_did")) {
                            var e = f.transaction(["zp_did"])
                              , o = e.objectStore("zp_did")
                              , s = o.get(n);
                            s.onsuccess = function(n) {
                                r(n.target.result)
                            }
                        }
                        i(2, f);
                        w(t)
                    } catch (h) {
                        i(-2, null)
                    }
                }
                ;
                u.onupgradeneeded = function(n) {
                    try {
                        var t = n.target.result;
                        t.createObjectStore("zp_did");
                        i(2, t)
                    } catch (r) {
                        i(-1, null)
                    }
                }
            } catch (e) {
                i(1, null)
            }
    }
    function k(n) {
        b(n, function(n, t) {
            i = n;
            r = t
        }, function(n) {
            u = n ? n : ""
        })
    }
    function d(t) {
        try {
            a.setItem(n, t);
            e = t
        } catch (i) {}
    }
    function g(t) {
        try {
            if (r.objectStoreNames.contains("zp_did")) {
                var i = r.transaction(["zp_did"], "readwrite")
                  , f = i.objectStore("zp_did");
                f.put(t, n);
                u = t
            }
        } catch (e) {}
    }
    var n = null
      , i = 0
      , r = null
      , u = ""
      , f = 1
      , t = 0
      , a = null
      , e = ""
      , v = 0
      , o = 0
      , s = ""
      , h = 0
      , c = ""
      , l = null;
    return {
        init: function(t, i, r) {
            n = t;
            k(i);
            p(i);
            y(r)
        },
        getQuota: function() {
            return v
        },
        getIndexData: function() {
            return {
                value: u,
                status: i,
                blob: f
            }
        },
        getLocalData: function() {
            return {
                value: e,
                status: t
            }
        },
        update: function(n, r) {
            try {
                if (l && (o == 2 || h == 2)) {
                    var u = {
                        method: "set",
                        value: n
                    };
                    l.contentWindow.postMessage(u, r);
                    s = n;
                    c = n
                }
            } catch (f) {}
            i == 2 && g(n);
            t == 2 && d(n)
        },
        setXDData: function(n) {
            s = n.localValue;
            o = n.localStatus;
            c = n.indexValue;
            h = n.indexStatus
        },
        getXDIndexData: function() {
            return {
                value: c,
                status: h
            }
        },
        getXDLocalData: function() {
            return {
                value: s,
                status: o
            }
        },
        setXDFrame: function(n) {
            l = n
        }
    }
}()
  , ForensicTk = ForensicTk || function() {
    function t(t, i, r) {
        try {
            var u = new Date
              , f = new Date(u.getTime() + 94608e6);
            ForensicCk.set(n, t, {
                domain: i,
                path: "/",
                expiry: f,
                secure: r
            })
        } catch (e) {}
    }
    function i() {
        var f = ForensicSt.getXDLocalData(), t = f.status == 2 ? f.value : "", i, r, u;
        return t || (i = ForensicSt.getXDIndexData(),
        t = i.status == 2 ? i.value : ""),
        t || (r = ForensicSt.getLocalData(),
        t = r.status == 2 ? r.value : ""),
        t || (u = ForensicSt.getIndexData(),
        t = u.status == 2 ? u.value : ""),
        t || (t = ForensicBr.cookiesEnabled() ? ForensicCk.get(n) : ""),
        t ? t : ""
    }
    var n = null;
    return {
        init: function(t) {
            n = t
        },
        get: function() {
            return i()
        },
        update: function(n, i) {
            var u = n.tr, r;
            return u == undefined || !u ? n : (r = u.lid,
            r != undefined && r && (ForensicSt.update(r, i.scriptBaseUrl),
            ForensicBr.cookiesEnabled && !i.nc && t(r, i.host, "https:" === location.protocol)),
            delete n.tr,
            n)
        }
    }
}()
  , ForensicBr = ForensicBr || function() {
    function i(n) {
        return typeof n != "undefined"
    }
    function h(n) {
        return typeof n == "function"
    }
    function ot(n) {
        return typeof n == "object"
    }
    function e(n, t) {
        return n.startsWith(t)
    }
    function o(n) {
        return Object.getPrototypeOf(n)
    }
    function r(n, t) {
        return Object.getOwnPropertyDescriptor(n, t)
    }
    function it(n) {
        return Crypto.util.hash128(n, 31)
    }
    function k(n, t) {
        return n ? (t == null && (t = {
            willReadFrequently: !0,
            desynchronized: !0
        }),
        n.getContext("2d", t)) : null
    }
    function st(n, t) {
        return n.getExtension(t)
    }
    function rt(n, t) {
        return n.getParameter(t)
    }
    function v(n, t, i, r, u) {
        return n.getImageData(t, i, r, u).data
    }
    function yt(n, t, i, r) {
        var u = n.createElement(t);
        return i && (u.width = i),
        r && (u.height = r),
        u
    }
    function c(n, t, i) {
        return yt(n, "canvas", t, i)
    }
    function vr(n, t, i, r) {
        return "rgba(" + n + "," + t + "," + i + "," + r + ")"
    }
    function u(n, t) {
        n.fillStyle = t
    }
    function d(n, t, i, r, u) {
        n.fillRect(t, i, r, u)
    }
    function pt(n, t, i, r, u) {
        n.font = t;
        n.fillText(i, r, u)
    }
    function t(n) {
        return n == null ? "" : n
    }
    function ff(n) {
        if (i(n.Worker) && i(n.Blob))
            try {
                var t = new Worker(URL.createObjectURL(new Blob(["var nav=navigator,wd=null,uad,e,canvas,gl,i,n,ext;try{wd={hwC:nav.hardwareConcurrency,lang:nav.language,langs:nav.languages?nav.languages.toString():'',plf:'platform' in nav?nav.platform:null,ua:'userAgent' in nav?nav.userAgent:null};try{'userAgentData' in nav?(uad=nav.userAgentData,wd.hints={o:uad.platform,m:uad.mobile,b:uad.brands},uad.getHighEntropyValues(['platformVersion','architecture','bitness','model','fullVersionList','formFactors']).then(function(n){wd.hints.hev={a:n.architecture,bt:n.bitness,ov:n.platformVersion,md:n.model,fv:n.fullVersionList,f:n.formFactors}}).catch(function(){})):wd.hints=null}catch(x){}try{wd.dt=0;e=new Error;Object.defineProperties(e,{message:{get:function(){return wd.dt++,''}},stack:{get:function(){return wd.dt++,''}},toString:{value:function(){return(new Error).stack.includes('String@')&&wd.dt++,''}}});console.debug(e)}catch(x){wd.dt=-1}try{if(canvas=new OffscreenCanvas(1,1),canvas!=null)for(i=0,n=['webgl2','webgl'];i<2;i++)(gl=canvas.getContext(n[i]))&&'function'==typeof gl.getParameter&&(wd.vm=gl.getParameter(gl.VENDOR),wd.rm=gl.getParameter(gl.RENDERER),wd.glVer=gl.getParameter(gl.VERSION),ext=gl.getExtension('WEBGL_debug_renderer_info'),ext!=null&&(wd.v=gl.getParameter(ext.UNMASKED_VENDOR_WEBGL),wd.r=gl.getParameter(ext.UNMASKED_RENDERER_WEBGL)))}catch(x){}}catch(x){wd=null}onmessage=function(){try{self.postMessage(wd)}catch(n){}}"],{
                    type: "application/javascript"
                })));
                t.onmessage = function(n) {
                    try {
                        p = n.data;
                        t.terminate()
                    } catch (n) {}
                }
                ;
                t.postMessage("wget")
            } catch (r) {}
    }
    function ef(n, t) {
        var i = n.requestFileSystem || n.webkitRequestFileSystem;
        if (i != null)
            try {
                i(n.TEMPORARY, 1, function() {
                    t(2)
                }, function() {
                    t(1)
                })
            } catch (r) {
                t(1)
            }
    }
    function sf(n) {
        if (n.openDatabase)
            try {
                n.openDatabase(null, null, null, null);
                gr = 1
            } catch (t) {
                return
            }
    }
    function hf(n, t) {
        if (!!n.HTMLCanvasElement) {
            if (!!n.CanvasRenderingContext2D) {
                try {
                    var i = c(t);
                    if (i == null)
                        return;
                    dt = 2;
                    ci = pf(i)
                } catch (r) {
                    dt = 1;
                    ci = "x"
                }
                return
            }
            dt = 1
        }
    }
    function cf(n) {
        var i, t, f, e, r;
        try {
            for (i = c(n, 2, 2),
            t = k(i),
            u(t, "#000"),
            d(t, 0, 0, i.width, i.height),
            u(t, "#fff"),
            d(t, 2, 2, 1, 1),
            t.beginPath(),
            t.arc(0, 0, 2, 0, 1, !0),
            t.closePath(),
            t.fill(),
            f = v(t, 0, 0, 2, 2),
            e = 0,
            r = 0; r < f.length; r++)
                e += f[r];
            return e
        } catch (o) {}
        return ""
    }
    function lf(n) {
        var e, t, r, f, i;
        try {
            for (e = c(n, 1, 2),
            t = k(e),
            u(t, vr(1, 1, 1, 255)),
            d(t, 0, 0, 1, 1),
            r = 0,
            f = v(t, 0, 0, 1, 2),
            i = 0; i < f.length; i++)
                r += f[i];
            return r
        } catch (o) {}
        return ""
    }
    function af(n) {
        var t, r, f, i;
        try {
            gt = 0;
            t = c(n, 25, 20);
            r = c(n, t.width, t.height);
            t.style.display = r.style.display = "inline";
            f = {
                desynchronized: !0
            };
            i = k(t, f);
            i.textBaseline = "alphabetic";
            u(i, "#f60");
            d(i, 2, 2, 20, 10);
            u(i, "#069");
            pt(i, "11pt Arial", "Cxw", 2, 1);
            var s = v(i, 0, 0, t.width, t.height)
              , h = t.toDataURL()
              , l = v(i, 0, 0, t.width, t.height)
              , o = k(r, f)
              , e = new Image;
            e.onload = function() {
                var f = 0, h = 0, y = !1, p = !1, w, n, r, u, a;
                for (o.drawImage(e, 0, 0),
                w = v(o, 0, 0, t.width, t.height),
                n = 0; n < t.height; n++)
                    for (r = 0; r < t.width; r++)
                        for (u = 0; u < 4; u++) {
                            var c = n * t.width * 4 + r * 4 + u
                              , i = s[c]
                              , k = l[c]
                              , b = w[c];
                            if (i != k) {
                                ni = "";
                                gt = 1;
                                return
                            }
                            !p && (r >= 2 && r <= 21 && n >= 4 && n <= 11 && i != 0 && i != 102 && i != 255 || n < 2 && u == 0 && i > 0) && (ni = r + "," + n + "," + u + "," + i,
                            nu = 1,
                            p = !0);
                            i != b && (f++,
                            a = Math.abs(i - b),
                            a > h && (h = a),
                            (h > 5 && f > 1 || f > 8) && (y = !0))
                        }
                y && (ni = h + "," + f,
                gt = 1)
            }
            ;
            e.src = h
        } catch (a) {}
    }
    function vf(n) {
        var r, e, l, o, s, t, i, h, f;
        try {
            if (r = c(n, 3, 3),
            r == null)
                return;
            for (r.style.display = "inline",
            e = k(r),
            e.textBaseline = "alphabetic",
            u(e, "#069"),
            pt(e, "18pt Arial", "C", -14, 14),
            l = !0,
            t = 0; t < r.width; t++)
                for (i = 0; i < r.height; i++)
                    for (h = v(e, t, i, 1, 1),
                    f = 0; f < 4; f++)
                        if (h[f] != 0) {
                            l = !1;
                            t = r.width;
                            i = r.height;
                            break
                        }
            if (l) {
                ai = "1";
                li = 1;
                return
            }
            for (o = c(n, 3, 3),
            o.style.display = "inline",
            s = k(o),
            s.textBaseline = "alphabetic",
            u(s, "rgba(255, 255, 255, 255)"),
            pt(s, "15pt Arial", "C", -10, 5),
            t = 0; t < o.width; t++)
                for (i = 0; i < o.height; i++)
                    for (h = s.getImageData(t, i, 1, 1).data,
                    f = 0; f < 4; f++)
                        if (h[f] != 0)
                            return;
            ai = "2";
            li = 1
        } catch (a) {}
    }
    function yf(n) {
        var h, i, r, e, l, o;
        try {
            var t = c(n, 2, 2)
              , a = c(n, t.width, t.height)
              , f = k(t)
              , s = k(a);
            if (!f || !s)
                return 0;
            for (i = 0; i < t.width; i++)
                for (r = 0; r < t.height; r++)
                    u(f, vr(Math.floor(Math.random() * 256), Math.floor(Math.random() * 256), Math.floor(Math.random() * 256), 255)),
                    d(f, i, r, 1, 1);
            for (h = v(f, 0, 0, t.width, t.height),
            i = 0; i < t.width; i++)
                for (r = 0; r < t.height; r++)
                    e = v(f, i, r, 1, 1),
                    u(s, vr(e[0], e[1], e[2], e[3])),
                    d(s, i, r, 1, 1);
            for (l = v(s, 0, 0, t.width, t.height),
            o = 0; o < h.length; o++)
                if (h[o] != l[o])
                    return 1
        } catch (y) {}
        return 0
    }
    function pf(n) {
        var t, i, f;
        n.width = 240;
        n.height = 200;
        n.style.display = "inline";
        t = n.getContext("2d");
        d(t, -1, -1, 1, 1);
        iu = it(n.toDataURL());
        try {
            v(t, null, null, null, null)
        } catch (r) {
            r instanceof Error && r.stack && r.stack.indexOf("chrome-extension") > -1 && (tu = 1)
        }
        return t.textBaseline = "alphabetic",
        u(t, "#f60"),
        d(t, 125, 1, 62, 20),
        u(t, "#069"),
        pt(t, "11pt Arial", "Cwm fjordbank glyphs vext quiz, 😃", 2, 15),
        u(t, "rgba(102, 204, 0, 0.7)"),
        pt(t, "18pt Arial", "Cwm fjordbank glyphs vext quiz, 😃", 4, 45),
        i = Math.PI * 2,
        t.globalCompositeOperation = "multiply",
        u(t, "rgb(255,0,255)"),
        t.beginPath(),
        t.arc(50, 50, 50, 0, i, !0),
        t.closePath(),
        t.fill(),
        u(t, "rgb(0,255,255)"),
        t.beginPath(),
        t.arc(100, 50, 50, 0, i, !0),
        t.closePath(),
        t.fill(),
        u(t, "rgb(255,255,0)"),
        t.beginPath(),
        t.arc(75, 100, 50, 0, i, !0),
        t.closePath(),
        t.fill(),
        u(t, "rgb(255,0,255)"),
        t.rect(0, 0, 10, 10),
        t.rect(2, 2, 6, 6),
        f = t.isPointInPath(5, 5, "evenodd") === !1 ? "1" : "0",
        f && (t.arc(75, 75, 75, 0, i, !0),
        t.arc(75, 75, 25, 0, i, !0),
        t.fill("evenodd")),
        it(n.toDataURL().replace("data:image/png;base64,", f))
    }
    function wf(n, t) {
        var f, o, i, r, s, u, e;
        if (n.WebGLRenderingContext != null || n.WebGL2RenderingContext != null)
            try {
                if (f = c(t),
                f == null)
                    return;
                for (r = 0,
                s = ["webgl2", "webgl", "experimental-webgl2", "experimental-webgl", "webkit-3d", "moz-webgl"]; r < 6; r++)
                    if ((i = f.getContext(o = s[r])) && h(i.getParameter)) {
                        vi = 2;
                        u = st(i, "WEBGL_debug_renderer_info");
                        e = "";
                        u != null && (uu = 1,
                        ht = rt(i, u.UNMASKED_VENDOR_WEBGL),
                        ut = rt(i, u.UNMASKED_RENDERER_WEBGL));
                        fu = rt(i, i.VERSION);
                        ti = rt(i, i.VENDOR);
                        ct = rt(i, i.RENDERER);
                        e = (ut ? ut : ct) + "," + (ht ? ht : ti);
                        ru = kf(i, o, e);
                        bf(i);
                        return
                    }
            } catch (l) {
                vi = 1
            }
    }
    function bf(n) {
        var t = st(n, "WEBGL_lose_context") || st(n, "MOZ_WEBGL_lose_context");
        t != null && t.loseContext()
    }
    function kf(n, t, i) {
        var u = n.createBuffer(), h, r, f, e, o, s, c;
        return n.bindBuffer(n.ARRAY_BUFFER, u),
        h = new Float32Array([-.2, -.9, 0, .4, -.26, 0, 0, .732134444, 0]),
        n.bufferData(n.ARRAY_BUFFER, h, n.STATIC_DRAW),
        u.itemSize = 3,
        u.numItems = 3,
        r = n.createProgram(),
        f = n.createShader(n.VERTEX_SHADER),
        n.shaderSource(f, "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}"),
        n.compileShader(f),
        e = n.createShader(n.FRAGMENT_SHADER),
        n.shaderSource(e, "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}"),
        n.compileShader(e),
        n.attachShader(r, f),
        n.attachShader(r, e),
        n.linkProgram(r),
        n.useProgram(r),
        r.vertexPosAttrib = n.getAttribLocation(r, "attrVertex"),
        r.offsetUniform = n.getUniformLocation(r, "uniformOffset"),
        n.enableVertexAttribArray(r.vertexPosArray),
        n.vertexAttribPointer(r.vertexPosAttrib, u.itemSize, n.FLOAT, 0, 0, 0),
        n.uniform2f(r.offsetUniform, 1, 1),
        n.drawArrays(n.TRIANGLE_STRIP, 0, u.numItems),
        o = "",
        s = st(n, "EXT_texture_filter_anisotropic") || st(n, "WEBKIT_EXT_texture_filter_anisotropic") || st(n, "MOZ_EXT_texture_filter_anisotropic"),
        s && (o = rt(n, s.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),
        c = t + i + o + n.canvas.toDataURL().replace("data:image/png;base64,", rt(n, n.SHADING_LANGUAGE_VERSION)) + n.getSupportedExtensions().sort().join(";"),
        it(c)
    }
    function df(n) {
        try {
            var t = n.javaEnabled();
            return t !== "undefined" && t ? 1 : 0
        } catch (i) {
            return 0
        }
    }
    function gf(n) {
        try {
            if (n.Intl && ot(n.Intl) && i(n.Intl.DateTimeFormat)) {
                var t = n.Intl.DateTimeFormat().resolvedOptions()
                  , r = t.timeZone;
                if (r && (r.indexOf("/") > -1 || r === "UTC"))
                    return [1, r, t.locale ? t.locale : "", t.calendar ? t.calendar : "", t.numberingSystem ? t.numberingSystem : ""]
            }
            return [0, bu(), "", "", ""]
        } catch (u) {
            return [-1, bu(), "", "", ""]
        }
    }
    function bu() {
        try {
            var n = jstz.determine();
            return n && ot(n) && i(n.name) ? n.name() : ""
        } catch (t) {
            return ""
        }
    }
    function ne(n) {
        var t, i;
        try {
            if (!("plugins"in n))
                return "|0";
            var u = []
              , f = n.plugins
              , r = f.length;
            for (t = 0; t < r; t++)
                i = f[t],
                u.push(i.name + (i.version ? i.version : ""));
            return (r > 0 ? Crypto.util.hash128(u.sort().toString(), 20) : "") + "|" + r
        } catch (e) {
            return ""
        }
    }
    function te(n) {
        try {
            var t = n.sessionStorage;
            if (null != t)
                try {
                    return t.getItem("zp_did"),
                    2
                } catch (i) {
                    return 1
                }
        } catch (i) {
            return 0
        }
        return 0
    }
    function ie(n, t) {
        var i = 0
          , r = 0;
        return "maxTouchPoints"in n ? i = n.maxTouchPoints : "msMaxTouchPoints"in n && (i = n.msMaxTouchPoints),
        "ontouchstart"in t && i > 0 && (r = 1),
        [r, i]
    }
    function yr(n, t) {
        return n.plugins.namedItem(t) != null
    }
    function re(n) {
        try {
            if (yr(n, "Microsoft Edge PDF Viewer") || yr(n, "Microsoft Edge PDF Plugin") || yr(n, "Edge PDF Viewer"))
                return 1
        } catch (t) {
            return 0
        }
        return 0
    }
    function ue(n) {
        var t, i, r;
        try {
            if (!n.getGamepads)
                return 0;
            if (t = n.getGamepads(),
            t)
                for (i = 0,
                r = t.length; i < r; i++)
                    if (t[i])
                        return 2;
            return 1
        } catch (u) {
            return -1
        }
    }
    function fe(n) {
        try {
            n.mediaDevices && n.mediaDevices.enumerateDevices && n.mediaDevices.enumerateDevices().then(function(n) {
                au = n.length
            }).catch(function() {
                return
            })
        } catch (t) {}
    }
    function ee(n) {
        var t, r, i;
        try {
            if (t = yt(n, "audio"),
            t && t.canPlayType)
                for (r = ["audio/3gpp", "audio/3gpp2", "audio/AMR-NB", "audio/AMR-WB", "audio/GSM", "audio/aac", "audio/basic", "audio/flac", "audio/midi", "audio/mpeg", 'audio/mp4; codecs="mp4a.40.2"', 'audio/mp4; codecs="ac-3"', 'audio/mp4; codecs="ec-3"', 'audio/mpeg; codecs="mp3"', 'audio/ogg; codecs="flac"', 'audio/ogg; codecs="vorbis"', 'audio/ogg; codecs="opus"', 'audio/ogg; codecs="speex"', 'audio/wav; codecs="1"', 'audio/webm; codecs="vorbis"', 'audio/webm; codecs="opus"', "audio/x-m4a", "audio/x-aiff", "audio/x-mpegurl"],
                i = 0; i < r.length; i++)
                    ar.push(ku(t.canPlayType(r[i])))
        } catch (u) {
            ar.push("-1")
        }
    }
    function oe(n) {
        var t, r, i;
        try {
            if (t = yt(n, "video"),
            t && t.canPlayType)
                for (r = ['video/3gpp; codecs="mp4v.20.8, samr"', 'video/mp4; codecs="avc1.42E01E"', 'video/mp4; codecs="avc1.58A01E"', 'video/mp4; codecs="avc1.4D401E"', 'video/mp4; codecs="avc1.64001E"', 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"', 'video/mp4; codecs="avc1.58A01E, mp4a.40.2"', 'video/mp4; codecs="avc1.4D401E, mp4a.40.2"', 'video/mp4; codecs="avc1.64001E, mp4a.40.2"', 'video/mp4; codecs="flac"', 'video/mp4; codecs="H.264, mp3"', 'video/mp4; codecs="H.264, aac"', 'video/mp4; codecs="mp4v.20.8, mp4a.40.2"', 'video/mp4; codecs="mp4v.20.240, mp4a.40.2"', 'video/mpeg; codec="H.264"', 'video/ogg; codecs="dirac, vorbis"', 'video/ogg; codecs="opus"', 'video/ogg; codecs="theora"', 'video/ogg; codecs="theora, vorbis"', 'video/ogg; codecs="theora, speex"', 'video/webm; codecs="vp9, opus"', 'video/webm; codecs="vp8, vorbis"', 'video/x-matroska; codecs="theora, vorbis"'],
                i = 0; i < r.length; i++)
                    lr.push(ku(t.canPlayType(r[i])))
        } catch (u) {
            lr.push("-1")
        }
    }
    function ku(n) {
        switch (n) {
        case "probably":
            return "3";
        case "maybe":
            return "2";
        case "":
            return "1";
        default:
            return "0"
        }
    }
    function wt(n, t) {
        return n.getChannelData(t)
    }
    function oi(n) {
        return n.OfflineAudioContext || n.webkitOfflineAudioContext
    }
    function pr(n, t, i) {
        var r = n.createOscillator();
        return t != null && (r.type = t),
        r.frequency.value = i,
        r
    }
    function du(n, t, i) {
        n.connect(t);
        t.connect(i);
        n.start(0)
    }
    function wr(n, t, i, r) {
        try {
            n.startRendering();
            switch (n.state) {
            case "suspended":
                t--;
                t > 0 ? setTimeout(wr(n, t, i, r), 10) : (clearTimeout(i),
                r(-6))
            }
        } catch (u) {
            r(-5)
        }
    }
    function bt(n, t) {
        n.stop();
        t && t.disconnect();
        n.disconnect()
    }
    function se(n) {
        var o = oi(n), i, r, u, f, t, e;
        if (o != null) {
            w = 1;
            try {
                if (i = new o(1,5e3,44100),
                !i)
                    return;
                w = 2;
                r = i.destination;
                u = i.createAnalyser();
                vu = it("" + i.sampleRate + r.maxChannelCount + r.numberOfInputs + r.numberOfOutputs + r.channelCount + r.channelCountMode + r.channelInterpretation + u.fftSize + u.frequencyBinCount + u.minDecibels + u.maxDecibels + u.smoothingTimeConstant);
                f = pr(i, "triangle", 1e4);
                t = i.createDynamicsCompressor();
                t.threshold && (t.threshold.value = -50);
                t.knee && (t.knee.value = 40);
                t.ratio && (t.ratio.value = 12);
                t.reduction && (t.reduction.value = -20);
                t.attack && (t.attack.value = 0);
                t.release && (t.release.value = .25);
                du(f, t, r);
                e = setTimeout(function() {
                    w = -1;
                    try {
                        i.oncomplete = function() {}
                        ;
                        bt(f, t)
                    } catch (n) {}
                }, 500);
                i.oncomplete = function(n) {
                    var r, u, i;
                    try {
                        for (clearTimeout(e),
                        r = 0,
                        u = wt(n.renderedBuffer, 0),
                        i = 4500; 5e3 > i; i++)
                            r += Math.abs(u[i]);
                        yu = r.toString();
                        t.reduction && (ei = Math.abs(t.reduction));
                        bt(f, t)
                    } catch (o) {
                        w = -4
                    }
                }
                ;
                i.onerror = function() {
                    w = -3
                }
                ;
                wr(i, 3, e, function(n) {
                    w = n
                })
            } catch (s) {
                w = -2
            }
        }
    }
    function gu(n, t) {
        try {
            var f = oi(n)
              , i = new f(1,300,44100)
              , r = pr(i, "triangle", 440)
              , u = i.createDynamicsCompressor();
            du(r, u, i.destination);
            i.oncomplete = function(n) {
                var f, e, i;
                try {
                    for (f = 0,
                    e = wt(n.renderedBuffer, 0),
                    i = 275; i < 300; i++)
                        f += Math.abs(e[i]);
                    t(f.toString());
                    bt(r, u)
                } catch (o) {}
            }
            ;
            i.startRendering()
        } catch (e) {}
    }
    function he(n) {
        var u = oi(n), t, i, r;
        if (u != null)
            try {
                if (t = new u(1,100,44100),
                !t)
                    return;
                i = pr(t, null, 0);
                i.start(0);
                r = setTimeout(function() {
                    g = -1;
                    try {
                        t.oncomplete = function() {}
                        ;
                        bt(i, null)
                    } catch (n) {}
                }, 300);
                t.oncomplete = function(n) {
                    try {
                        clearTimeout(r);
                        var t = wt(n.renderedBuffer, 0);
                        t != null && (g = t.some(function(n) {
                            return n !== 0
                        }) ? 1 : 0);
                        bt(i, null)
                    } catch (u) {
                        g = -4
                    }
                }
                ;
                t.onerror = function() {
                    g = -3
                }
                ;
                wr(t, 3, r, function(n) {
                    g = n
                })
            } catch (f) {
                g = -2
            }
    }
    function ce(n) {
        var r;
        try {
            if (!i(n.AudioBuffer))
                return 0;
            var u = Math.random()
              , t = new AudioBuffer({
                length: 100,
                sampleRate: 44100
            })
              , f = new Float32Array(100);
            return t.copyToChannel(f.map(function() {
                return u
            }), 0),
            r = wt(t, 0)[0],
            wt(t, 0).some(function(n) {
                return n !== r
            }) ? 1 : 0
        } catch (e) {
            return -1
        }
    }
    function le() {
        return or == null || sr == null ? "0" : or != sr ? "1" : "0"
    }
    function ae(n) {
        var r, s, t;
        try {
            if (r = n.performance,
            !i(r) || !h(r.now))
                return 0;
            var u = 1
              , f = 1
              , e = r.now()
              , o = e;
            for (s = 0; s < 5e3; s++)
                (e = o) < (o = r.now()) && (t = o - e,
                t > u ? t < f && (f = t) : t < u && (f = u,
                u = t));
            return u
        } catch (c) {
            return -1
        }
    }
    function ve(n) {
        try {
            var t = n.speechSynthesis;
            if (!i(t))
                return;
            ii = 1;
            function r(n) {
                var i, u, f, r, c;
                try {
                    // 首先进行一系列操作和条件判断
                    if (lu++) {
                        if (n != null && vt != 0 && ri == 0 && lu == 3) {
                            // 重置多个变量
                            di = gi = ur = fr = "";
                            vt = ri = nr = tr = ir = rr = er = 0;
                            ui = [];
                            fi = [];
                        }
                        if (vt != 0) {
                            return;
                        }
                    }
                    
                    i = t.getVoices();
                    if (i && i.length > 0) {
                        vt = i.length;
                        i.sort(function (n, t) {
                            return n.name.localeCompare(t.name);
                        });
                        u = [];
                        for (f = 0; f < i.length; f++) {
                            var o = i[f];
                            var s = o.name;
                            var h = o.voiceURI;
                            if (o.lang !== "zh-CN") {
                                if (ui.length < 5) {
                                    ui.push(o.lang);
                                }
                            }
                            if (o.localService === true) {
                                ri++;
                                r = o.lang;
                                if (o.default) {
                                    if (r) {
                                        ur = "en-US";
                                    }
                                    // fr = s ? br(s) : h ? br(h) : "";
                                    fr = "Microsoft David - English (Unite"
                                }
                                if (r) {
                                    if (r.toUpperCase().endsWith("CN")) {
                                        nr++;
                                    }
                                    c = r.toLowerCase();
                                    if (e(c, "zh")) {
                                        tr++;
                                    } else if (e(c, "ru")) {
                                        ir++;
                                    } else if (e(c, "en")) {
                                        rr++;
                                    }
                                }
                            }
                            if (u.indexOf(s) === -1) {
                                u.push(s.replace(/\u00A0/g, " "));
                                ye(s, h);
                            }
                            if (f === 0 && h) {
                                gi = br(h);
                            }
                        }
                        if (u.length > 0) {
                            di = it(u.toString());
                            er = u.length;
                        }
                    }
                } catch (l) {
                    ii = -2
                }
            }
            r(null);
            t.onvoiceschanged !== undefined && (t.onvoiceschanged = r)
        } catch (r) {
            ii = -1
        }
    }
    function br(n) {
        return n.length > 32 ? n.slice(0, 32) : n
    }
    function ye(n, t) {
        try {
            e(t, "moz") || e(t, "urn:moz") ? kt("5") : e(n, "Google") ? kt("2") : e(n, "Microsoft") ? kt("3") : e(t, "com.apple") ? kt("4") : kt("1")
        } catch (i) {}
    }
    function kt(n) {
        fi.indexOf(n) === -1 && fi.push(n)
    }
    function pe(n) {
        var t, r, i, u;
        try {
            for (t = [],
            r = [["chrome", "c"], ["safari", "s"], ["__crWeb", "cw"], ["__gCrWeb", "gw"], ["yandex", "y"], ["__yb", "yb"], ["__ybro", "yo"], ["__firefox__", "f"], ["__edgeTrackingPreventionStatistics", "e"], ["webkit", "w"], ["oprt", "ot"], ["samsungAr", "ss"], ["ucweb", "uc"], ["UCShellJava", "ucs"], ["puffinDevice", "p"], ["opr", "o"]],
            i = 0; i < r.length; i++)
                u = r[i],
                ot(n[u[0]]) && t.push(u[1]);
            return t.length > 0 ? t.toString() : ""
        } catch (f) {
            return "-1"
        }
    }
    function we(n, t) {
        try {
            i(n.Notification) ? t.permissions == null ? b = -2 : h(t.permissions.query) ? t.permissions.query({
                name: "notifications"
            }).then(function(n) {
                Notification.permission === "denied" && n.state === "prompt" && (b = 0)
            }).catch(function() {
                b = -4
            }) : b = -3 : b = -1
        } catch (r) {
            b = -5
        }
    }
    function kr(n, t) {
        try {
            return n.getAttribute(t) != null ? !0 : !1
        } catch (i) {
            return !1
        }
    }
    function be(n, t, i) {
        var o = ["__webdriver_evaluate", "__selenium_evaluate", "__webdriver_script_function", "__webdriver_script_func", "$cdc_asdjflasutopfhvcZLmcf", "__webdriver_script_fn", "__fxdriver_evaluate", "__driver_unwrapped", "__webdriver_unwrapped", "$cdc_asdjflasutopfhvcZLmcfl_", "__driver_evaluate", "__selenium_unwrapped", "__fxdriver_unwrapped", "$chrome_asyncScriptInfo", "__$webdriverAsyncExecutor"], h = ["_selenium", "callSelenium", "calledSelenium", "_Selenium_IDE_Recorder", "_WEBDRIVER_ELEM_CACHE", "webdriver", "__$webdriverAsyncExecutor", "__lastWatirAlert", "__lastWatirConfirm", "__lastWatirPrompt", "__webdriverFunc", "ChromeDriverw"], c = ["_phantom", "callPhantom"], l = ["__nightmare", "nightmare"], a = ["cefQuery", "CefSharp"], v = ["__stopAllTimers"], w = ["__pwInitScripts", "__playwright__binding__"], e, f, r, u;
        try {
            for (r = 0; r < h.length; r++)
                if (h[r]in n)
                    return [1, "1"];
            for (r = 0; r < o.length; r++)
                if (o[r]in t)
                    return [1, "1"];
            for (e in t)
                try {
                    if (e.match(/\$[a-z]dc_/) && t[e].cache_)
                        return [1, "1"]
                } catch (k) {}
            if (f = t.documentElement,
            f != null) {
                if (kr(f, "selenium"))
                    return [1, "1"];
                if (kr(f, "driver"))
                    return [1, "1"];
                if (kr(f, "webdriver"))
                    return [1, "1"]
            }
            for (r = 0; r < c.length; r++)
                if (c[r]in n)
                    return [1, "2"];
            for (r = 0; r < l.length; r++)
                if (l[r]in n)
                    return [1, "3"];
            for (r = 0; r < a.length; r++)
                if (a[r]in n)
                    return [1, "11"];
            for (r = 0; r < v.length; r++)
                if (v[r]in n)
                    return [1, "18"];
            for (r = 0; r < w.length; r++)
                if (w[r]in n)
                    return [1, "10"];
            if ("wdioElectron"in n)
                return [1, "12"];
            if ("Cypress"in n)
                return [1, "13"];
            if ("__phantomas"in n)
                return [1, "14"];
            if ("RunPerfTest"in n)
                return [1, "15"];
            if ("awesomium"in n)
                return [1, "16"];
            if ("geb"in n)
                return [1, "17"];
            try {
                if (n.external && n.external.toString && n.external.toString().indexOf("Sequentum") != -1)
                    return [1, "4"]
            } catch (k) {}
            if ("domAutomation"in n || "domAutomationController"in n)
                return [1, "5"];
            try {
                if (!!n.fmget_targets == !0)
                    return [1, "6"]
            } catch (k) {}
            try {
                if (i.webdriver != null && i.webdriver == !0)
                    return [1, "0"]
            } catch (k) {}
            if (ke())
                return [1, "19"];
            if (b == 0)
                return [1, "7"];
            if (u = nf(i, s ? s : p, "8"),
            u.status == !1)
                return si(s ? s : p, u.rCode);
            if (u = nf(i, y, "9"),
            u.status == !1)
                return si(y, u.rCode);
            if (u = tf(s ? s : p, "8"),
            u.status == !1)
                return si(s ? s : p, u.rCode);
            if (u = tf(y, "9"),
            u.status == !1)
                return si(y, u.rCode)
        } catch (k) {
            return [0, "-1"]
        }
        return [0, ""]
    }
    function ke() {
        var t = !1, n;
        try {
            document.createElement(0)
        } catch (i) {
            try {
                n = i.stack.split("\n");
                t = n.length >= 2 ? !!n[1].match(/Ob[cej]{3}t\.a[lp]{3}y[(< ]{3}an[oynm]{5}us>/) : !0
            } catch (i) {}
        }
        return t
    }
    function si(n, t) {
        return pu = n.ua,
        wu = n.hints,
        [1, t]
    }
    function nf(n, t, i) {
        return t == null ? l(!0) : "userAgent"in n && "ua"in t && (t.ua != null ? t.ua.trim() : null) !== (n.userAgent != null ? n.userAgent.trim() : null) ? l(!1, i) : {
            status: !0
        }
    }
    function tf(n, t) {
        var i = nt, r;
        return n == null || i == null && n.hints == null ? l(!0) : (r = n.hints,
        i == null && r != null || i != null && r == null) ? l(!1, t + "0") : r.o !== i.o || r.m !== i.m ? l(!1, t + "1") : ge(r.b, i.b) == !1 ? l(!1, t + "2") : i.hev == null && r.hev == null ? l(!0) : i.hev != null && r.hev == null || i.hev == null && r.hev != null ? l(!1, t + "3") : r.hev.ov !== i.hev.ov ? l(!1, t + "4") : de(r.hev.f, i.hev.f) == !1 ? l(!1, t + "5") : l(!0)
    }
    function l(n, t) {
        var i = {
            status: n
        };
        return t && (i.rCode = t),
        i
    }
    function de(n, t) {
        if (n == null && t == null)
            return !0;
        if (n == null && t != null || n != null && t == null)
            return !1;
        var i = n.length;
        if (i != t.length)
            return !1;
        while (i--)
            if (n[i] !== t[i])
                return !1;
        return !0
    }
    function ge(n, t) {
        if (n == null && t == null)
            return !0;
        if (n == null && t != null || n != null && t == null || n.length != t.length)
            return !1;
        for (var i = 0; i < n.length; i++)
            if (no(n[i], t, t.length) != !0)
                return !1;
        return !0
    }
    function no(n, t, i) {
        for (var u, r = 0; r < i; r++)
            if (u = t[r],
            n.brand == u.brand && n.version == u.version)
                return !0;
        return !1
    }
    function rf(n) {
        try {
            var u = n.toString()
              , t = Function.prototype.toString.call(n)
              , i = n.name
              , r = i.split(" ");
            if (r.length > 1 && (i = r[1]),
            t.length > 60 || t.indexOf("[native code]") == -1 || t.IndexOf(i + "()") == -1 || u != t)
                return !0
        } catch (f) {}
        return !1
    }
    function n(n) {
        return h(n) ? rf(n) : !1
    }
    function to(n, t) {
        return !!Object.prototype.hasOwnProperty.call(n, t)
    }
    function io(t, u, f, e) {
        var a = o(f), v = o(u), s = [], l = [], h, y, p, w, c, b;
        try {
            if (h = HTMLCanvasElement.prototype,
            h && (n(h.toDataURL) && s.push(0),
            n(h.getContext) && s.push(0)),
            oi(t) != null && i(t.AudioBuffer) && (h = AudioBuffer.prototype) && h)
                for (l = [h.getChannelData, h.copyFromChannel, h.copyToChannel],
                c = 0; c < l.length; c++)
                    n(l[c]) && s.push(1);
            (h = Date.prototype) && h && n(h.getTimezoneOffset) && s.push(2);
            i(t.Intl) && i(t.Intl.DateTimeFormat) && (h = Intl.DateTimeFormat.prototype) && h && n(h.resolvedOptions) && s.push(3);
            try {
                n(r(v, "width").get) && s.push(4)
            } catch (k) {}
            try {
                n(r(v, "height").get) && s.push(5)
            } catch (k) {}
            if ("platform"in f)
                try {
                    n(r(a, "platform").get) && s.push(6)
                } catch (k) {}
            if ("productSub"in f)
                try {
                    n(r(a, "productSub").get) && s.push(7)
                } catch (k) {}
            try {
                rf(r(a, "plugins").get) && s.push(8)
            } catch (k) {}
            if ("userAgent"in f)
                try {
                    n(r(a, "userAgent").get) && s.push(9)
                } catch (k) {}
            try {
                n(o(t.localStorage).getItem) && s.push(10)
            } catch (k) {}
            try {
                n(o(t.localStorage).setItem) && s.push(11)
            } catch (k) {}
            try {
                n(eval) && s.push(12)
            } catch (k) {}
            try {
                n(r(v, "availWidth").get) && s.push(13)
            } catch (k) {}
            try {
                n(r(v, "availHeight").get) && s.push(14)
            } catch (k) {}
            try {
                n(r(a, "language").get) && s.push(15)
            } catch (k) {}
            try {
                n(r(a, "vendor").get) && s.push(16)
            } catch (k) {}
            try {
                n(r(a, "webdriver").get) && s.push(17)
            } catch (k) {}
            if (i(t.WebGLRenderingContext) && (h = WebGLRenderingContext.prototype) && h)
                for (l = [h.getParameter, h.getExtension, h.getExtension],
                c = 0; c < l.length; c++)
                    n(l[c]) && s.push(c + 18);
            if (i(t.WebGL2RenderingContext) && (h = WebGL2RenderingContext.prototype) && h)
                for (l = [h.getParameter, h.getExtension, h.getExtension],
                c = 0; c < l.length; c++)
                    n(l[c]) && s.push(c + 18);
            if (i(t.RTCPeerConnection) && (h = RTCPeerConnection.prototype) && h) {
                for (l = [h.createDataChannel, h.setLocalDescription, h.createOffer, h.constructor],
                c = 0; c < l.length; c++)
                    n(l[c]) && s.push(c + 21);
                try {
                    n(r(h, "onicecandidate").set) && s.push(24)
                } catch (k) {}
            }
            if (i(t.Worker) && (h = Worker.prototype) && h && n(h.postMessage) && s.push(25),
            i(t.ServiceWorkerContainer) && (h = ServiceWorkerContainer.prototype) && h && n(h.register) && s.push(26),
            i(t.BroadcastChannel) && (h = BroadcastChannel.prototype) && h)
                for (l = [h.postMessage, h.constructor],
                c = 0; c < l.length; c++)
                    n(l[c]) && s.push(c + 27);
            if ("userAgentData"in f) {
                try {
                    n(r(a, "userAgentData").get) && s.push(29)
                } catch (k) {}
                try {
                    n(o(f.userAgentData).getHighEntropyValues) && s.push(30)
                } catch (k) {}
            }
            if ("speechSynthesis"in t)
                try {
                    n(o(t.speechSynthesis).getVoices) && s.push(31)
                } catch (k) {}
            if ("performance"in t) {
                try {
                    n(o(t.performance).now) && s.push(32)
                } catch (k) {}
                n(t.performance.memory) && s.push(32);
                try {
                    n(r(o(t.performance.memory), "jsHeapSizeLimit").get) && s.push(32)
                } catch (k) {}
                n(t.performance.mark) && s.push(32)
            }
            if ("deviceMemory"in f)
                try {
                    n(r(a, "deviceMemory").get) && s.push(33)
                } catch (k) {}
            if ("mediaDevices"in f)
                try {
                    n(o(f.mediaDevices).enumerateDevices) && s.push(34)
                } catch (k) {}
            if ("maxTouchPoints"in f)
                try {
                    n(r(a, "maxTouchPoints").get) && s.push(35)
                } catch (k) {}
            if ("hardwareConcurrency"in f)
                try {
                    n(r(a, "hardwareConcurrency").get) && s.push(36)
                } catch (k) {}
            if ("mimeTypes"in f)
                try {
                    n(r(a, "mimeTypes").get) && s.push(37)
                } catch (k) {}
            if ("ApplePaySession"in t) {
                try {
                    n(o(t.ApplePaySession)) && s.push(38)
                } catch (k) {}
                try {
                    n(o(t.ApplePaySession.canMakePayments)) && s.push(38)
                } catch (k) {}
            }
            if ((h = Function.prototype) && h && n(Function.prototype.call) && s.push(39),
            y = f.permissions,
            ot(y))
                try {
                    (n(y.query) || to(y, "query")) && s.push(40)
                } catch (k) {}
            p = yt(e, "audio");
            ot(p) && n(p.canPlayType) && s.push(41);
            w = yt(e, "video");
            ot(w) && n(w.canPlayType) && s.push(42);
            n(t.close) && s.push(43);
            try {
                n(r(v, "colorDepth").get) && s.push(44)
            } catch (k) {}
            try {
                n(r(v, "pixelDepth").get) && s.push(45)
            } catch (k) {}
            if ("brave"in f)
                try {
                    n(f.brave.isBrave) && s.push(46)
                } catch (k) {}
            for (t.Notification && n(t.Notification) && s.push(47),
            l = [Object.getOwnPropertyNames, Object.getPrototypeOf, Object.getOwnPropertyDescriptor, Object.hasOwnProperty],
            c = 0; c < l.length; c++)
                n(l[c]) && s.push(c + 48);
            if (t.Promise && n(t.Promise) && s.push(52),
            f.gpu) {
                try {
                    n(r(a, "gpu").get) && s.push(53)
                } catch (k) {}
                n(f.gpu.requestAdapter) && s.push(54);
                try {
                    n(r(GPUAdapterInfo.prototype, "vendor").get) && s.push(55)
                } catch (k) {}
            }
            if ("devicePixelRatio"in t)
                try {
                    n(r(window, "devicePixelRatio").get) && s.push(56)
                } catch (k) {}
            if ((h = Function.prototype) && h && n(h.toString) && s.push(57),
            n(t.setTimeout) && s.push(58),
            n(t.setInterval) && s.push(59),
            b = t.XMLHttpRequest,
            b && (h = b.prototype) && h && (n(h.open) && s.push(60),
            n(h.send) && s.push(61)),
            t.console && t.console.debug && t.console.log) {
                try {
                    n(console.debug) && s.push(62)
                } catch (k) {}
                try {
                    n(console.log) && s.push(63)
                } catch (k) {}
            } else
                s.push(64);
            f.webdriver == null && s.push(65)
        } catch (k) {
            return [0, "-1"]
        }
        return s.length > 0 ? [1, s.toString()] : [0, ""]
    }
    function ro(n) {
        var r, u, t, f, i, o;
        try {
            if (r = n.head.querySelectorAll("script"),
            r.length == 0)
                return null;
            for (u = "window.passwordExtensionId",
            t = [],
            f = 0; f < r.length; f++)
                i = r[f],
                i.src ? e(i.src, "chrome-extension") && (o = i.src.split("/").pop(),
                t.push(o.substring(0, o.lastIndexOf(".")))) : i.text && e(i.text, u) && t.indexOf(u) === -1 && t.push(u);
            if (t.length > 0)
                return t.toString()
        } catch (s) {}
        return null
    }
    function uo() {
        try {
            null[0]
        } catch (n) {
            return n.message.slice(0, 11)
        }
    }
    function fo(n) {
        try {
            if ("userAgentData"in n) {
                var t = n.userAgentData;
                nt = {
                    o: t.platform,
                    m: t.mobile,
                    b: t.brands
                };
                n.userAgentData.getHighEntropyValues(["platformVersion", "architecture", "bitness", "model", "fullVersionList", "formFactors"]).then(function(n) {
                    nt.hev = {
                        a: n.architecture,
                        bt: n.bitness,
                        ov: n.platformVersion,
                        md: n.model,
                        fv: n.fullVersionList,
                        f: n.formFactors
                    }
                }).catch(function() {})
            }
        } catch (i) {}
    }
    function eo(n, t) {
        try {
            var i = n.gpu;
            if (!i || !h(i.requestAdapter))
                return;
            h(i.getPreferredCanvasFormat) && (eu = i.getPreferredCanvasFormat());
            i.requestAdapter().then(function(n) {
                var r, u, f, o, s;
                if (wi = 1,
                r = [],
                u = [],
                n != null) {
                    if (f = n.info,
                    f && (lt = f.vendor,
                    at = f.architecture,
                    yi = f.description),
                    o = n.limits,
                    o) {
                        for (s in o)
                            u.push([s, o[s]]);
                        u.sort(function(n, t) {
                            return n[0].localeCompare(t[0])
                        });
                        try {
                            ki = o.maxStorageBufferBindingSize
                        } catch (c) {
                            ki = 0
                        }
                        ou = u.length
                    }
                    n.features && (n.features.forEach(function(n) {
                        e(n, "chromium-experimental") && hu++;
                        r.push(n)
                    }),
                    r.sort(),
                    su = r.length);
                    !f && h(n.requestAdapterInfo) && n.requestAdapterInfo().then(function(n) {
                        bi = 1;
                        n != null && (lt = n.vendor,
                        at = n.architecture,
                        yi = n.description,
                        pi = it(lt + at + r.toString() + u.toString()))
                    }).catch(function() {
                        bi = -1
                    });
                    pi = it(lt + at + r.toString() + u.toString());
                    h(n.requestDevice) && n.requestDevice().then(function(n) {
                        n != null && (cu = oo(i, n, t))
                    }).catch(function() {})
                }
            }).catch(function() {
                wi = -1
            })
        } catch (r) {}
    }
    function oo(n, t, i) {
        try {
            var u = c(i)
              , r = u.getContext("webgpu");
            return r.configure({
                device: t,
                format: n.getPreferredCanvasFormat(),
                toneMapping: {
                    mode: "extended"
                }
            }),
            r.getConfiguration().toneMapping.mode === "extended" ? 1 : 0
        } catch (f) {
            return 0
        }
    }
    function so(n) {
        try {
            var t = n.ApplePaySession;
            return i(t) ? h(t) ? t.canMakePayments() ? 3 : 2 : 1 : 0
        } catch (r) {
            return -1
        }
    }
    function ho(n) {
        try {
            if (!i(n.keyboard)) {
                tt[0] = 0;
                tt[1] = 0;
                return
            }
            tt[0] = 1;
            n.keyboard.getLayoutMap().then(function(n) {
                tt[1] = n.size
            })
        } catch (t) {
            tt[1] = -1
        }
    }
    function co(n) {
        try {
            var t = n.documentElement;
            return t === undefined ? -1 : h(t.getAttributeNames) ? t.getAttributeNames().length : -2
        } catch (i) {
            return -3
        }
    }
    function lo(n, t) {
        try {
            return "WebkitAppearance"in t.documentElement.style ? escape(n.javaEnabled.toString()) === "function%20javaEnabled%28%29%20%7B%20%5Bnative%20code%5D%20%7D" ? "V8" : "JSC" : "non-webkit"
        } catch (i) {
            return "-1"
        }
    }
    function ao(n) {
        var t;
        try {
            if (t = n.connection,
            i(t)) {
                var r = t.rtt
                  , u = t.type
                  , f = t.effectiveType
                  , e = t.downlink;
                return [i(r) ? r : "", i(u) ? u : "", i(f) ? f : "", i(e) ? e : ""]
            }
        } catch (o) {}
        return ["", "", "", ""]
    }
    function vo(n) {
        for (var r, t = 0, i = ["rec2020", "p3", "srgb"]; t < i.length; t++)
            if (r = i[t],
            f(n, "color-gamut: ", r))
                return t + 1;
        return 0
    }
    function yo(n) {
        return f(n, "prefers-reduced-motion: ", "reduce") || !f(n, "prefers-reduced-motion: ", "no-preference") ? 1 : 0
    }
    function po(n) {
        return f(n, "dynamic-range: ", "high") || !f(n, "dynamic-range: ", "standard") ? 1 : 0
    }
    function wo(n) {
        return f(n, "prefers-contrast: ", "no-preference") ? 0 : f(n, "prefers-contrast: ", "high") ? 1 : f(n, "prefers-contrast: ", "more") ? 2 : f(n, "prefers-contrast: ", "low") ? 3 : f(n, "prefers-contrast: ", "less") ? 4 : f(n, "prefers-contrast: ", "forced") ? 5 : 9
    }
    function bo(n) {
        return f(n, "inverted-colors: ", "inverted") || !f(n, "inverted-colors: ", "none") ? 1 : 0
    }
    function ko(n) {
        return f(n, "forced-colors: ", "active") || !f(n, "forced-colors: ", "none") ? 1 : 0
    }
    function go(n) {
        return f(n, "prefers-color-scheme: ", "dark") ? 1 : 0
    }
    function f(n, t, i) {
        return n.matchMedia("(" + t + i + ")").matches
    }
    function ns(n) {
        try {
            if (h(n.matchMedia)) {
                var t = vo(n)
                  , i = yo(n)
                  , r = po(n)
                  , u = wo(n)
                  , f = bo(n)
                  , e = ko(n)
                  , o = go(n);
                return [t, i, r, u, f, e, o]
            }
        } catch (s) {}
        return ["", "", "", "", "", "", ""]
    }
    function ts(n) {
        var r = 0, t;
        try {
            t = n.performance;
            i(t) && i(t.memory) && i(t.memory.jsHeapSizeLimit) && (r = t.memory.jsHeapSizeLimit)
        } catch (u) {}
        return r
    }
    function is() {
        try {
            return Math.tan(6 * Math.LN2)
        } catch (n) {
            return ""
        }
    }
    function rs() {
        try {
            return Math.pow(Math.PI, -100)
        } catch (n) {
            return ""
        }
    }
    function us(n) {
        return n.mozInnerScreenY && "number" == typeof n.mozInnerScreenY ? "1" : "0"
    }
    function uf() {
        if (et < 1)
            try {
                var n = new Error;
                Object.defineProperties(n, {
                    message: {
                        get: function() {
                            return et++,
                            ""
                        }
                    },
                    stack: {
                        get: function() {
                            return et++,
                            ""
                        }
                    },
                    toString: {
                        value: function() {
                            return (new Error).stack.includes("String@") && et++,
                            ""
                        }
                    }
                });
                console.debug(n)
            } catch (n) {
                et = -1
            }
    }
    function fs(n) {
        try {
            return Object.keys(o(n)).length
        } catch (t) {
            return -1
        }
    }
    function es(n) {
        var t = n.HtmlElement;
        try {
            return t && "autocapitalize"in t.prototype ? "1" : "0"
        } catch (i) {
            return -1
        }
    }
    function os(n) {
        try {
            return n && "pointerLockElement"in n.prototype ? "1" : "0"
        } catch (t) {
            return -1
        }
    }
    function ss(n) {
        return n && n.style && "MozAppearance"in n.style ? "1" : "0"
    }
    function hs(n) {
        try {
            if (!n.orientation)
                return 0;
            var t = n.orientation.type;
            return e(t, "portrait-p") ? 1 : e(t, "landscape-p") ? 2 : e(t, "portrait-s") ? 3 : e(t, "landscape-s") ? 4 : 5
        } catch (i) {
            return -1
        }
    }
    function cs(n) {
        if (!n || n.vm === undefined)
            return !0;
        try {
            return n.vm !== ti || n.rm !== ct ? !1 : n.v !== undefined && (n.v !== ht || n.r !== ut) ? !1 : !0
        } catch (t) {
            return !1
        }
    }
    function ls(n, t) {
        if (!n || n.langs === undefined)
            return !0;
        try {
            return n.langs !== t ? !1 : !0
        } catch (i) {
            return !1
        }
    }
    function as(n) {
        try {
            return n.Buffer !== undefined
        } catch (t) {
            return !1
        }
    }
    function vs(n) {
        try {
            return n.languages ? n.languages.toString() : ""
        } catch (t) {
            return ""
        }
    }
    function ys(n, r, u, f, e, o, h, c, l) {
        uf();
        var rt = new Date
          , kt = rt.getTimezoneOffset()
          , oi = n.mimeTypes == null ? 0 : n.mimeTypes.length
          , ot = ie(n, r)
          , si = pe(r)
          , st = io(r, u, n, f)
          , or = ae(r)
          , sr = so(r)
          , it = ao(n)
          , vr = co(f)
          , yr = lo(n, f)
          , pr = yf(f) ? 1 : gt == 1 ? 2 : nu == 1 ? 3 : li == 1 ? 4 : 0
          , wr = cf(f)
          , br = lf(f)
          , kr = ce(r)
          , lu = le()
          , k = ns(r)
          , yt = be(r, f, n)
          , pu = ts(r)
          , wu = ue(n)
          , d = gf(r)
          , v = s != null ? s : p
          , pt = cs(v)
          , wt = ForensicSt.getIndexData()
          , bt = vs(n)
          , bu = ls(v, bt);
        ur = d[2]
        ui[0] = d[2]
        ui = [...new Set(ui)];  
        ForensicWR.isError() && a.log && ForensicRq.createError({
            message: ForensicWR.errorMessage()
        }, a.apiUrl, a.key);
        try {
            return d[0] + "|" + d[1] + "|" + kt + "|" + rt.toString().replace(/\|/g, "") + "|" + ("platform"in n ? t(n.platform) : "") + "|" + t(n.language ? n.language : n.userLanguage) + "|" + (t(u.width) + "|" + t(u.height)) + "|" + t(u.availWidth) + "|" + t(u.availHeight) + "|" + t(r.innerWidth) + "|" + t(r.innerHeight) + "|" + t(r.devicePixelRatio) + "|" + (t(u.colorDepth) + "-" + t(u.pixelDepth)) + "|" + t(df(n)) + "|" + oi + "|" + ("appName"in n ? t(n.appName) : "") + "|" + ("productSub"in n ? t(n.productSub) : "") + "|" + eval.toString().length + "|" + (n.mozApps == null && r.mozInnerScreenX == null ? "0" : "1") + "|" + (r.msCredentials == null ? "0" : "1") + "|" + (n.buildID == null ? "0" : "1") + "|" + (r.external ? "1" : "0") + "|" + (r.clientInformation ? "1" : "0") + "|" + (r.opera == null ? "0" : "1") + "|" + ("ActiveXObject"in r ? "1" : "0") + "|" + t(n.vendor) + "|" + (r.history != null ? r.history.length : "0") + "|" + (e == !0 ? "-1" : ForensicWR.isSupported() ? "1" : "0") + "|" + ForensicWR.getL() + "|" + t(n.doNotTrack || n.msDoNotTrack || r.doNotTrack) + "|" + t(n.hardwareConcurrency) + "|" + ot[0] + "|" + ot[1] + "|" + dt + "|" + ci + "|" + dr + "|" + wt.status + "|" + ForensicSt.getLocalData().status + "|" + gr + "|" + te(r) + "|" + ForensicSt.getQuota() + "|" + vi + "|" + ru + "|" + hi + "|" + c + "|" + t(n.deviceMemory) + "|" + (i(r.InstallTrigger) ? "1" : "0") + "|" + re(n) + "|" + uu + "|" + au + "|" + w + "|" + vu + "|" + yu + "|" + pr + "|" + yt[0] + "|" + yt[1] + "|" + t(ht) + "|" + (!r.chrome ? "0" : "1") + "|" + (!n.webdriver ? "0" : "1") + "|" + st[0] + "|" + st[1] + "|" + (!n.brave ? "0" : "1") + "|" + uo() + "|" + ForensicWR.getR() + "|" + (ForensicWR.isError() ? "1" : "0") + "|" + (o != 0 ? (r.performance.now() - o).toString() : "0") + "|" + (n.permissions != null ? "1" : "0") + "|" + t(r.outerWidth) + "|" + t(r.outerHeight) + "|" + hr + "|" + cr + "|" + (v == null ? "||" : t(v.lang) + "|" + t(v.plf) + "|" + t(v.hwC)) + "|" + (y == null ? "||" : t(y.lang) + "|" + t(y.plf) + "|" + t(y.hwC)) + "|" + h + "|" + rs() + "|" + (nt != null && nt.hev != null ? "1" : "0") + "|" + ("platform"in n ? "1" : "0") + "|" + ("productSub"in n ? "1" : "0") + "|" + pu + "|" + ii + "|" + vt + "|" + gi + "|" + di + "|" + or + "|" + si + "|" + sr + "|" + it[0] + "|" + vr + "|" + yr + "|" + k[0] + "|" + k[1] + "|" + k[2] + "|" + k[3] + "|" + k[4] + "|" + k[5] + "|" + (nt != null ? "1" : "0") + "|" + b + "|" + g + "|" + kr + "|" + tt[0] + "|" + ForensicWR.numCandidates() + "|" + (ut ? ut.replace(/\|/g, "") : "") + "|" + fi.toString() + "|" + ar.toString() + "|" + lr.toString() + "|" + wr + "|" + ("gpu"in n ? "1" : "0") + "|" + is() + "|" + us(r) + "|" + ur + "|" + ("serviceWorker"in n ? "1" : "0") + "|" + wi + "|" + bi + "|" + lt + "|" + wt.blob + "|" + ("duckduckgo"in n ? "1" : "0") + "|" + er + "|" + iu + "|" + ri + "|" + nr + "|" + ui.toString() + "|" + fr + "|" + t(ti) + "|" + (ct ? ct.replace(/\|/g, "") : "") + "|" + t(fu) + "|" + k[6] + "|" + wu + "|" + (i(r.Worker) ? "1" : "0") + "|" + it[1] + "|" + it[2] + "|" + it[3] + "|" + (ei !== ei ? "" : ei) + "|" + ni + "|" + ai + "|" + tr + "|" + rr + "|" + ir + "|" + t(d[2]) + "|" + et + "|" + tt[1] + "|" + fs(n) + "|" + (n.webkitPersistentStorage ? "1" : "0") + "|" + (n.webkitTemporaryStorage ? "1" : "0") + "|" + (r.webkitResolveLocalFileSystemURL ? "1" : "0") + "|" + (r.BatteryManager ? "1" : "0") + "|" + (r.webkitMediaStream ? "1" : "0") + "|" + (r.webkitSpeechGrammar ? "1" : "0") + "|" + (n.setAppBadge ? "1" : "0") + "|" + (n.clearAppBadge ? "1" : "0") + "|" + (n.joinAdInterestGroup ? "1" : "0") + "|" + (n.runAdAuction ? "1" : "0") + "|" + (n.deprecatedURNToURL ? "1" : "0") + "|" + (r.ApplePayError ? "1" : "0") + "|" + (r.CSSPrimitiveValue ? "1" : "0") + "|" + (r.Counter ? "1" : "0") + "|" + (r.RGBColor ? "1" : "0") + "|" + (r.WebKitMediaKeys ? "1" : "0") + "|" + (r.safari ? "1" : "0") + "|" + ("ongestureend"in r ? "1" : "0") + "|" + (r.TouchEvent ? "1" : "0") + "|" + ("orientation"in r ? "1" : "0") + "|" + es(r) + "|" + os(r.Document) + "|" + (n.globalPrivacyControl !== undefined ? "1" : "0") + "|" + ("onmozfullscreenchange"in r ? "1" : "0") + "|" + (r.CSSMozDocumentRule ? "1" : "0") + "|" + (r.CanvasCaptureMediaStream ? "1" : "0") + "|" + ss(f.documentElement) + "|" + (r.DOMRectList ? "1" : "0") + "|" + (r.SVGGeometryElement ? "1" : "0") + "|" + (r.RTCPeerConnectionIceEvent ? "1" : "0") + "|" + ("getStorageUpdates"in n ? "1" : "0") + "|" + (r.CSSCounterStyleRule ? "1" : "0") + "|" + (r.SharedWorker ? "1" : "0") + "|" + hs(u) + "|" + t(at) + "|" + t(yi) + "|" + pi + "|" + su + "|" + hu + "|" + (v == null || pt ? "||||" : t(v.v) + "|" + (v.r ? v.r.replace(/\|/g, "") : "") + "|" + t(v.vm) + "|" + (v.rm ? v.rm.replace(/\|/g, "") : "") + "|" + t(v.glVer)) + "|" + (p != null ? p.dt : "-1") + "|" + (ft == null ? "|||" : ft.o1 + "|" + ft.o2 + "|" + ft.wd + "|" + ft.c) + "|" + (pt ? "1" : "0") + "|" + (l ? "1" : "0") + "|" + (v != null ? v.vm !== undefined ? "1" : "0" : "-1") + "|" + d[3] + "|" + d[4] + "|" + lu + "|" + br + "|" + ou + "|" + eu + "|" + cu + "|" + ki + "|" + tu + "|" + (as(r) ? "1" : "0") + "|" + (!r.emit ? "0" : "1") + "|" + (!r.spawn ? "0" : "1") + "|" + bt + "|" + (p != null ? "1" : "0") + "|" + (!window.__jsDebugIsReady ? "0" : "1") + "|" + (bu ? "1" : "0")
            return d[0] + "|" + d[1] + "|" + kt + "|" + rt.toString().replace(/\|/g, "") + "|" + ("platform"in n ? t(n.platform) : "") + "|" + t(n.language ? n.language : n.userLanguage) + "|" + (t(u.width) + "|" + t(u.height)) + "|" + t(u.availWidth) + "|" + t(u.availHeight) + "|" + t(r.innerWidth) + "|" + t(r.innerHeight) + "|" + t(r.devicePixelRatio) + "|" + (t(u.colorDepth) + "-" + t(u.pixelDepth)) + "|" + t(df(n)) + "|" + oi + "|" + ("appName"in n ? t(n.appName) : "") + "|" + ("productSub"in n ? t(n.productSub) : "") + "|" + eval.toString().length + "|" + (n.mozApps == null && r.mozInnerScreenX == null ? "0" : "1") + "|" + (r.msCredentials == null ? "0" : "1") + "|" + (n.buildID == null ? "0" : "1") + "|" + (r.external ? "1" : "0") + "|" + (r.clientInformation ? "1" : "0") + "|" + (r.opera == null ? "0" : "1") + "|" + ("ActiveXObject"in r ? "1" : "0") + "|" + t(n.vendor) + "|" + (r.history != null ? r.history.length : "0") + "|" + (e == !0 ? "-1" : ForensicWR.isSupported() ? "1" : "0") + "|" + ForensicWR.getL() + "|" + t(n.doNotTrack || n.msDoNotTrack || r.doNotTrack) + "|" + t(n.hardwareConcurrency) + "|" + ot[0] + "|" + ot[1] + "|" + dt + "|" + ci + "|" + dr + "|" + wt.status + "|" + ForensicSt.getLocalData().status + "|" + gr + "|" + te(r) + "|" + ForensicSt.getQuota() + "|" + vi + "|" + ru + "|" + hi + "|" + c + "|" + t(n.deviceMemory) + "|" + (i(r.InstallTrigger) ? "1" : "0") + "|" + re(n) + "|" + uu + "|" + au + "|" + w + "|" + vu + "|" + yu + "|" + pr + "|" + yt[0] + "|" + yt[1] + "|" + t(ht) + "|" + (!r.chrome ? "0" : "1") + "|" + (!n.webdriver ? "0" : "1") + "|" + st[0] + "|" + st[1] + "|" + (!n.brave ? "0" : "1") + "|" + uo() + "|" + ForensicWR.getR() + "|" + (ForensicWR.isError() ? "1" : "0") + "|" + (o != 0 ? (r.performance.now() - o).toString() : "0") + "|" + (n.permissions != null ? "1" : "0") + "|" + t(r.outerWidth) + "|" + t(r.outerHeight) + "|" + hr + "|" + cr + "|" + (v == null ? "||" : t(v.lang) + "|" + t(v.plf) + "|" + t(v.hwC)) + "|" + (y == null ? "||" : t(y.lang) + "|" + t(y.plf) + "|" + t(y.hwC)) + "|" + h + "|" + rs() + "|" + (nt != null && nt.hev != null ? "1" : "0") + "|" + ("platform"in n ? "1" : "0") + "|" + ("productSub"in n ? "1" : "0") + "|" + pu + "|" + ii + "|" + vt + "|" + gi + "|" + di + "|" + or + "|" + si + "|" + sr + "|" + it[0] + "|" + vr + "|" + yr + "|" + k[0] + "|" + k[1] + "|" + k[2] + "|" + k[3] + "|" + k[4] + "|" + k[5] + "|" + (nt != null ? "1" : "0") + "|" + b + "|" + g + "|" + kr + "|" + tt[0] + "|" + ForensicWR.numCandidates() + "|" + (ut ? ut.replace(/\|/g, "") : "") + "|" + fi.toString() + "|" + ar.toString() + "|" + lr.toString() + "|" + wr + "|" + ("gpu"in n ? "1" : "0") + "|" + is() + "|" + us(r) + "|" + ur + "|" + ("serviceWorker"in n ? "1" : "0") + "|" + wi + "|" + bi + "|" + lt + "|" + wt.blob + "|" + ("duckduckgo"in n ? "1" : "0") + "|" + er + "|" + iu + "|" + ri + "|" + nr + "|" + ui.toString() + "|" + fr + "|" + t(ti) + "|" + (ct ? ct.replace(/\|/g, "") : "") + "|" + t(fu) + "|" + k[6] + "|" + wu + "|" + (i(r.Worker) ? "1" : "0") + "|" + it[1] + "|" + it[2] + "|" + it[3] + "|" + (ei !== ei ? "" : ei) + "|" + ni + "|" + ai + "|" + tr + "|" + rr + "|" + ir + "|" + t(d[2]) + "|" + et + "|" + tt[1] + "|" + fs(n) + "|" + (n.webkitPersistentStorage ? "1" : "0") + "|" + (n.webkitTemporaryStorage ? "1" : "0") + "|" + (r.webkitResolveLocalFileSystemURL ? "1" : "0") + "|" + (r.BatteryManager ? "1" : "0") + "|" + (r.webkitMediaStream ? "1" : "0") + "|" + (r.webkitSpeechGrammar ? "1" : "0") + "|" + (n.setAppBadge ? "1" : "0") + "|" + (n.clearAppBadge ? "1" : "0") + "|" + (n.joinAdInterestGroup ? "1" : "0") + "|" + (n.runAdAuction ? "1" : "0") + "|" + (n.deprecatedURNToURL ? "1" : "0") + "|" + (r.ApplePayError ? "1" : "0") + "|" + (r.CSSPrimitiveValue ? "1" : "0") + "|" + (r.Counter ? "1" : "0") + "|" + (r.RGBColor ? "1" : "0") + "|" + (r.WebKitMediaKeys ? "1" : "0") + "|" + (r.safari ? "1" : "0") + "|" + ("ongestureend"in r ? "1" : "0") + "|" + (r.TouchEvent ? "1" : "0") + "|" + ("orientation"in r ? "1" : "0") + "|" + es(r) + "|" + os(r.Document) + "|" + (n.globalPrivacyControl !== undefined ? "1" : "0") + "|" + ("onmozfullscreenchange"in r ? "1" : "0") + "|" + (r.CSSMozDocumentRule ? "1" : "0") + "|" + (r.CanvasCaptureMediaStream ? "1" : "0") + "|" + ss(f.documentElement) + "|" + (r.DOMRectList ? "1" : "0") + "|" + (r.SVGGeometryElement ? "1" : "0") + "|" + (r.RTCPeerConnectionIceEvent ? "1" : "0") + "|" + ("getStorageUpdates"in n ? "1" : "0") + "|" + (r.CSSCounterStyleRule ? "1" : "0") + "|" + (r.SharedWorker ? "1" : "0") + "|" + hs(u) + "|" + t(at) + "|" + t(yi) + "|" + pi + "|" + su + "|" + hu + "|" + (v == null || pt ? "||||" : t(v.v) + "|" + (v.r ? v.r.replace(/\|/g, "") : "") + "|" + t(v.vm) + "|" + (v.rm ? v.rm.replace(/\|/g, "") : "") + "|" + t(v.glVer)) + "|" + (p != null ? p.dt : "-1") + "|" + (ft == null ? "|||" : ft.o1 + "|" + ft.o2 + "|" + ft.wd + "|" + ft.c) + "|" + (pt ? "1" : "0") + "|" + (l ? "1" : "0") + "|" + (v != null ? v.vm !== undefined ? "1" : "0" : "-1") + "|" + d[3] + "|" + d[4] + "|" + lu + "|" + br + "|" + ou + "|" + eu + "|" + cu + "|" + ki + "|" + tu + "|" + (as(r) ? "1" : "0") + "|" + (!r.emit ? "0" : "1") + "|" + (!r.spawn ? "0" : "1") + "|" + bt + "|" + (p != null ? "1" : "0") + "|" + (!window.__jsDebugIsReady ? "0" : "1") + "|" + (bu ? "1" : "0")
        } catch (ku) {
            return ku.message
        }
    }
    var a, hi = 0, dr = 0, gr = 0, dt = 0, ci = "", gt = 0, nu = 0, li = 0, ni = "", ai = "", tu = 0, iu = "", vi = 0, ru = "", uu = 0, ht = "", ti = "", ut = "", ct = "", fu = "", lt = "", at = "", yi = "", eu = "", ou = 0, su = 0, hu = 0, pi = "", wi = 0, bi = 0, cu = 0, ki = 0, ii = 0, lu = 0, di = "", gi = "", vt = 0, ri = 0, nr = 0, tr = 0, ir = 0, rr = 0, ui = [], ur = "", fr = "", er = 0, fi = [], au = 0, w = 0, vu = "", yu = "", ei = "", or = null, sr = null, g = 0, s = null, hr = 0, y = null, cr = 0, pu = "", wu = null, b = 1, nt = null, lr = [], ar = [], tt = [0, ""], p = null, ft = null, et = 0;
    return ef(window, function(n) {
        dr = n
    }),
    sf(window),
    {
        init: function(n, t, i) {
            var r = navigator;
            a = i;
            hi = r.cookieEnabled ? 1 : 0;
            ff(n);
            uf();
            se(n);
            we(n, r);
            fe(r);
            fo(r);
            wf(n, t);
            hf(n, t);
            ve(n);
            gu(n, function(n) {
                or = n
            });
            gu(n, function(n) {
                sr = n
            });
            he(n);
            ee(t);
            oe(t);
            af(t);
            vf(t);
            eo(r, t);
            ho(r)
        },
        getP: function(n) {
            return ne(n)
        },
        getSI: function(n) {
            return ro(n)
        },
        getProps: function(n, t, i, r, u, f, e, o, s) {
            return ys(n, t, i, r, u, f, e, o, s)
        },
        getUAH: function() {
            return nt
        },
        getBUA: function() {
            return pu
        },
        getBUAH: function() {
            return wu
        },
        cookiesEnabled: function() {
            return hi
        },
        setWProps: function(n) {
            "support"in n ? (hr = n.support,
            s = n.support == 0 ? null : n) : "error"in n && (hr = -1,
            a.log && ForensicRq.createError(n.error, a.apiUrl, a.key))
        },
        setSWProps: function(n) {
            "support"in n ? (cr = n.support,
            y = n.support == 0 ? null : n) : "error"in n && (cr = -1,
            a.log && ForensicRq.createError(n.error, a.apiUrl, a.key))
        },
        setFProps: function(n) {
            ft = n
        }
    }
}()
  , ForensicRq = ForensicRq || function() {
    function t(n) {
        var t = n.responseText;
        if (t != null && t !== "" && t.indexOf("error") > -1)
            return t;
        switch (n.status) {
        case 302:
            return {
                error: {
                    message: "Https required."
                }
            };
        case 401:
            return {
                error: {
                    message: "Unauthorized."
                }
            };
        case 403:
            return {
                error: {
                    message: "Forbidden."
                }
            };
        case 404:
            return {
                error: {
                    message: "File not found."
                }
            };
        case 408:
            return {
                error: {
                    message: "Http Timeout."
                }
            };
        case 409:
            return {
                error: {
                    message: "Conflict."
                }
            };
        case 500:
            return {
                error: {
                    message: "Server error."
                }
            };
        case 0:
            return {
                error: {
                    message: "Request aborted."
                }
            };
        default:
            return {
                error: {
                    message: "Http error status:" + n.status
                }
            }
        }
    }
    function i(n, i, r, u, f, e, o, s, h) {
        if (!window.XMLHttpRequest)
            return !1;
        var c = new XMLHttpRequest;
        return "withCredentials"in c ? (c.open(i, r, !0),
        c.setRequestHeader("Content-Type", "text/plain; charset=utf-8"),
        c.setRequestHeader("Accept", "application/json, lk/" + f + " q=0.1"),
        c.timeout = n,
        h && (c.withCredentials = !0),
        c.onreadystatechange = function() {
            c.readyState === 4 && (c.status === 200 || c.status === 201 ? o(JSON.parse(c.responseText)) : s(t(c)))
        }
        ,
        c.ontimeout = function() {
            s({
                error: {
                    message: "CORS Timeout."
                }
            })
        }
        ,
        c.onerror = function() {
            c.readyState !== 4 && s({
                error: {
                    message: "CORS Request Failed."
                }
            })
        }
        ,
        c.send(e),
        !0) : !1
    }
    function r(n, t, i, r, u, f, e) {
        var c = "zap_" + +new Date, s = document, l = s.head ? s.head : s.getElementsByTagName("head")[0], o = s.createElement("script"), h = window, v = h.setTimeout(function() {
            h[c] = function() {}
            ;
            l.removeChild(o);
            e({
                error: {
                    message: "JSONP Timeout."
                }
            })
        }, n), a;
        h[c] = function(n) {
            h.clearTimeout(v);
            l.removeChild(o);
            n.error ? e(n) : f(n)
        }
        ;
        a = "";
        i != null && (a = "&v=" + i);
        t = t + "/jsonp?callback=" + c + "&lk=" + r + a + "&jd=" + encodeURIComponent(u);
        o.setAttribute("src", t);
        o.setAttribute("type", "text/javascript");
        l.appendChild(o)
    }
    function n(n) {
        return JSON.stringify(n, function(n, t) {
            return t == null || t == "" ? undefined : t
        })
    }
    function u(t, u, f, e, o, s, h, c) {
        i(t, "POST", u, f, e, n(o), s, h, c) || r(t, u, f, e, jsonStr, s, h)
    }
    return {
        create: function(n, t, i, r, f, e, o, s) {
            u(n, t, i, r, f, e, o, s)
        },
        createError: function(t, i, r) {
            if (!window.XMLHttpRequest)
                return !1;
            var u = new XMLHttpRequest;
            u.open("POST", i + "/logError", !0);
            u.setRequestHeader("Content-Type", "text/plain; charset=utf-8");
            u.setRequestHeader("Accept", "application/json, lk/" + r + " q=0.2");
            u.timeout = 3e3;
            u.send(n(t))
        }
    }
}()
  , ForensicBase = ForensicBase || function() {
    function t(t, i, r, u, f, e) {
        var v = !1
          , l = !1
          , o = t.document
          , y = o.documentElement
          , h = o.addEventListener
          , a = h ? "addEventListener" : "attachEvent"
          , w = h ? "removeEventListener" : "detachEvent"
          , c = h ? "" : "on"
          , s = function(h) {
            if (h != null) {
                if (h.type === "readystatechange" && o.readyState !== "complete")
                    return;
                (h.type === "load" ? t : o)[w](c + h.type, s, !1)
            }
            v || (v = !0,
            n(t, o, i, r, u, f, e))
        }
          , p = function() {
            try {
                y.doScroll("left")
            } catch (n) {
                setTimeout(p, 10);
                return
            }
            s(null)
        };
        if (o.readyState === "complete")
            n(t, o, i, r, u, f, e);
        else {
            if (!h && y.doScroll)
                try {
                    l = !t.frameElement
                } catch (b) {
                    l = !0
                }
            if (l)
                p();
            else
                try {
                    o[a](c + "DOMContentLoaded", s, !1);
                    o[a](c + "readystatechange", s, !1);
                    t[a](c + "load", s, !1)
                } catch (k) {
                    throw {
                        error: {
                            message: "OnDocumentLoaded."
                        }
                    };
                }
        }
    }
    function n(n, t, r, u, f, e, o) {
        try {
            var s = i(t);
            s != null && (n.document.addEventListener ? (s.addEventListener("load", function(n) {
                e(n, r)
            }, !1),
            n.addEventListener("message", function(n) {
                o(n, r)
            }, !1)) : (s.attachEvent("onload", function(n) {
                e(n, r)
            }),
            n.attachEvent("onmessage", function(n) {
                o(n, r)
            })),
            s.src = r.scriptBaseUrl + u,
            t.body.appendChild(s))
        } catch (h) {
            r.log && ForensicRq.createError({
                message: h.message
            }, r.apiUrl, r.key)
        }
        typeof f == "function" && f(n, t, r)
    }
    function i(n) {
        var t = n.createElement("iframe");
        return t.id = "forensicf",
        t.name = "forensicf",
        t.style.visibility = "hidden",
        t.style.height = "0",
        t.style.width = "0",
        t.style.border = "0",
        t.sandbox = "allow-same-origin allow-scripts",
        t
    }
    function r(n, t) {
        var i = document.getElementById(n), e, u;
        if (!i)
            throw {
                error: {
                    message: "Invalid script id."
                }
            };
        try {
            var r = i.src.toLowerCase().split("/scripts/")[0]
              , o = r.replace("-cdn", "") + "/" + t
              , f = r;
            return location.protocol == "file:" && r.indexOf("localhost") != -1 && (f = r.replace("https", "http")),
            e = i.getAttribute("data-key"),
            i.removeAttribute("data-key"),
            u = i.getAttribute("data-domain"),
            {
                apiUrl: o,
                scriptBaseUrl: f,
                host: u ? u : r.replace("https://", "").replace("http://", ""),
                key: e,
                nc: i.hasAttribute("data-nc"),
                ur: i.hasAttribute("data-ur"),
                uax: i.hasAttribute("data-uax"),
                log: i.hasAttribute("data-log")
            }
        } catch (s) {
            throw {
                error: {
                    message: "Invalid script reference."
                }
            };
        }
    }
    return typeof String.prototype.startsWith != "function" && (String.prototype.startsWith = function(n, t) {
        return t = t || 0,
        this.substring(t, t + n.length) === n
    }
    ),
    typeof String.prototype.endsWith != "function" && (String.prototype.endsWith = function(n, t) {
        return t = t === undefined || t > this.length ? this.length : t,
        this.substring(t - n.length, t) === n
    }
    ),
    typeof String.prototype.includes != "function" && (String.prototype.includes = function(n) {
        return this.indexOf(n) !== -1
    }
    ),
    {
        init: function(n, i, u, f, e, o, s) {
            var h = r(i, u);
            return t(n, h, f, e, o, s),
            h
        }
    }
}()
  , Forensic = Forensic || function() {
    function h(n, t, i) {
        ForensicBr.init(n, t, i);
        e = !0
    }
    function c(n, t) {
        try {
            i = n.target;
            ForensicSt.setXDFrame(i);
            i.contentWindow.postMessage({
                method: "get"
            }, t.scriptBaseUrl)
        } catch (n) {
            t.log && ForensicRq.createError({
                message: n.message
            }, t.apiUrl, t.key)
        }
    }
    function l(n, i) {
        t++;
        try {
            if (n.origin == null || n.origin != i.scriptBaseUrl)
                return;
            var r = n.data
              , u = r.method;
            u === "fd" ? (r.sd != null && ForensicSt.setXDData(r.sd),
            r.fp != null && ForensicBr.setFProps(r.fp)) : u === "wp" ? ForensicBr.setWProps(r) : u === "swp" ? ForensicBr.setSWProps(r) : u === "err" && i.log && ForensicRq.createError(r.error, i.apiUrl, i.key)
        } catch (n) {}
    }
    function a() {
        try {
            var t = window;
            n = ForensicBase.init(t, "forensic_script_id", "forensic", "/scripts/xd56.html", h, c, l);
            ForensicSt.init("zp_did-" + n.host, t, navigator);
            ForensicTk.init("zp_did")
        } catch (i) {
            r = i
        }
    }
    function v(t) {
        t = ForensicTk.update(t, n);
        typeof f == "function" && f(t)
    }
    function o(n) {
        console.log(n);
        typeof u == "function" && u(n)
    }
    function y(t, i, r, u, f, o, s, h, c, l) {
        var a = 0
          , v = setInterval(function() {
            a++;
            (a >= 20 || e) && (clearInterval(v),
            p(i, n.key, r, u, f, s, h, c, o, l))
        }, 5)
    }
    function p(r, u, f, e, o, h, c, l, a, v) {
        var y = window
          , b = 0;
        try {
            y.performance && (b = performance.now())
        } catch (tt) {}
        var p = navigator
          , d = ForensicBr.getP(p)
          , k = y.document
          , g = ForensicBr.getSI(k)
          , w = 0
          , nt = setInterval(function() {
            var tt, it, rt;
            if (w++,
            tt = ForensicWR.isSupported() == !1 || ForensicWR.isError() || ForensicWR.isComplete(),
            w > 25 || tt && (t == 0 || t >= 2)) {
                clearInterval(nt);
                it = w > 25 && tt == !1;
                rt = {
                    ri: f,
                    ei: c == null || !c.eventId ? null : c.eventId,
                    sei: c == null || !c.subEventId ? null : c.subEventId,
                    cc: l == null || !l.countryCode ? null : l.countryCode,
                    pc: l == null || !l.postalCode ? null : l.postalCode,
                    pl: l == null || !l.proximityLimit ? null : l.proximityLimit,
                    rt: h == null || !h.requestToken ? null : h.requestToken,
                    st: h == null || h.sendResponseToken == null ? null : h.sendResponseToken,
                    p: d,
                    si: g,
                    bp: ForensicBr.getProps(p, y, screen, k, it, b, t, ForensicTk.get(), i),
                    d: a,
                    c: v ? v : null,
                    md: c == null || c.multiDevice == null ? null : c.multiDevice,
                    pei: c == null || c.pastEventIds == null ? null : c.pastEventIds,
                    ua: p.userAgent,
                    uah: s(ForensicBr.getUAH()),
                    ua2: ForensicBr.getBUA(),
                    ua2h: s(ForensicBr.getBUAH()),
                    nc: n.nc == !1 ? null : !0,
                    ur: n.ur == !1 ? null : !0,
                    uax: n.uax == !1 ? null : !0,
                    v: "5.6.1",
                    can: it == !0 ? ForensicWR.getCandidates() : null
                };
                try {
                    ForensicRq.create("10000", r, null, u, rt, e, o, !0)
                } catch (ut) {
                    n.log && ForensicRq.createError({
                        message: ut.message
                    }, n.apiUrl, n.key);
                    o({
                        error: {
                            message: "Script Error: " + ut.message
                        }
                    })
                }
            }
        }, 50)
    }
    function s(n) {
        try {
            if (n != null)
                return n.hev != null ? {
                    o: n.o,
                    m: n.m,
                    b: n.b,
                    a: n.hev.a,
                    bt: n.hev.bt,
                    ov: n.hev.ov,
                    md: n.hev.md,
                    fv: n.hev.fv,
                    f: n.hev.f
                } : {
                    o: n.o,
                    m: n.m,
                    b: n.b
                }
        } catch (t) {}
        return null
    }
    var e = !1
      , t = 0
      , n = null
      , r = null
      , u = null
      , f = null
      , i = null;
    return a(),
    {
        forensic: function(t, i, e, s, h, c, l, a) {
            if (u = e,
            f = i,
            r != null) {
                o(r);
                return
            }
            y(this, n.apiUrl, t, v, o, l, c, s, h, a)
        },
        createTokenParam: function(n, t) {
            return {
                requestToken: n,
                sendResponseToken: t
            }
        },
        createUniquenessParam: function(n, t, i, r) {
            return {
                eventId: n,
                subEventId: t,
                multiDevice: i,
                pastEventIds: r
            }
        },
        createGeoParam: function(n, t, i) {
            return {
                countryCode: n,
                postalCode: t,
                proximityLimit: i
            }
        }
    }
}();
